gpt4 book ai didi

Python 2.x 正则表达式 : halve all measures in px ("10px" becomes "5px" and so on)

转载 作者:行者123 更新时间:2023-11-28 21:07:55 41 4
gpt4 key购买 nike

我有一个 xml 文件,其中包含许多像素单位,例如“12px”“20px”。我想将所有这些措施减半。也就是把“12px”换成“6px”等等。这可以用正则表达式完成吗?

奇数个像素可能会向上舍入(“7px”变成“4px”)但这应该自然发生,因为所有数字都是整数而且我使用的是 Python 2.x。

找到措施并不是困难的部分。例如

myString = '''fontSize="12px" and marginLeft="19px" and paddingTop="10px"'''
print re.sub(r'\d+px','hello',myString)

但是我如何将匹配的 re 中的整数部分传递到替换中(除以 2 之后)?有什么建议吗?

最佳答案

\d+ 周围添加一个捕获组并使用 lambda 函数作为替换参数并对组 1 值执行必要的操作:

import re
myString = '''fontSize="12px" and marginLeft="19px" and paddingTop="10px"'''
print(re.sub(r'(\d+)px', lambda m: "{}px".format(int(m.group(1)) / 2), myString))

参见 Python demo

更多详情:

  • (\d+) - 1 个或多个数字(因为 + 是一个贪婪量词,匹配 1 个或多个出现的量化子模式,尽可能多)<
  • px - 文字字符序列

当一个匹配对象被传递给 lambda 时,它包含 2 个组:.group(0)(或 .group(0))包含整个匹配(例如 10px) 和 .group(1) 包含数字(例如 10)。要除以找到的数字,应将其转换为 int,并使用 .format 动态构建生成的替换。

关于Python 2.x 正则表达式 : halve all measures in px ("10px" becomes "5px" and so on),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40908840/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com