在文件中找到某个环境中的数字并修改它

find a number in a certain environment in a file and modify it

我有一个大文件,其中包含许多特定语法的出现:(width 0.15)

数字0.15可以是任意浮点数。我希望找到这些数字的所有实例并修改它们。我知道如何使用 float('0.15')+modifier 修改它们,我也知道如何再次生成结果字符串。

我找不到号码。我查看了 re 模块,但不太清楚如何匹配数字本身以及不包括匹配的环境。

所以我知道如何使用 re 匹配整个环境 (width 0.15) 中出现的所有事件。我知道如何修改数字字符串。但我不知道如何匹配环境中的实际数字。如何做到这一点?

IIUC,你可以使用环视:

s = '(width 0.15)'

match = re.search('(?<=\(width )\d+(?:\.\d*)?(?=\))', s)

输出:

match.group()
# '0.15'

所有出现 + 转换为浮点数:

out = list(map(float, re.findall('(?<=\(width )\d+(?:\.\d*)?(?=\))', )s))

输出:

[0.15]

正则表达式:

(?<=\(width )  # match should be preceded by "(width "
\d+            # one or more digits
(?:\.\d*)?     # optionally, a dot with zero or more digits
(?=\))         # match should be followed by ")"