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