Python 如何将round()放入正则表达式中?

Python 如何将round()放入正则表达式中?,python,regex,Python,Regex,我有一个巨大的.json文件,其中包含多个信息,我只需要在“heightroof”参数中对数字进行四舍五入 我正在使用正则表达式,我有heightroof:“(.*)”表达式来查找我需要的内容。我可以搜索“heightroof:“(.*)”并替换为“height”:\1在Emeditor中使用正则表达式可以使它工作,但我不能对数字进行舍入。但我还需要对“heightroof”之后的数字进行舍入 与此相反: "heightroof": "21.3423423", 我需要这个: "height

我有一个巨大的.json文件,其中包含多个信息,我只需要在“heightroof”参数中对数字进行四舍五入

我正在使用正则表达式,我有
heightroof:“(.*)”
表达式来查找我需要的内容。我可以搜索“heightroof:“(.*)”并替换为“height”:\1在Emeditor中使用正则表达式可以使它工作,但我不能对数字进行舍入。但我还需要对“heightroof”之后的数字进行舍入

与此相反:

 "heightroof": "21.3423423",
我需要这个:

 "height": 21,

请帮我把数字四舍五入。

我想你需要回电话才能这样做
使用
re.sub('rx',lambda m=>{})
form

接收

“(高度)屋顶”\s*:\s*”(\d+(?:\。\d*),

然后在回调函数中,将
m[2]
转换为浮点,四舍五入,然后取整数部分
将其设置为字符串,然后使用字符串部分
+m[1]+
”:“
+round+
”,


等等。

sin是正确的,因为您需要一个回调函数

import re

s = '"heightroof": "21.3423423"'

def repl(m):
    return '"height": ' + str(round(float(m.group(1))))

re.sub(r'"heightroof": "([^"]+)"', repl, s)

'"height": 21'
使用
“heightroof”:“([^.]*)”
在遇到点时停止…但我宁愿正确解析json,这样您就可以在21.8到22之间取整,而不是截断。