我有一个包含十进制数字的文本文件,并且想要四舍五入任何有小数 >= 0.5
,否则我想截断小数,例如,23.7897
变成24
和17.2395
变成17
。
<0.5
情况对于 : 来说不是问题re.sub
:
re.sub(r'(\d+)\.[0-4]\d*', r'\1', line)
但是,对于 >=0.5
情况,我想知道是否有办法\1
在替换期间以某种方式操纵捕获组?它是否存储在任何地方以便可以发送到函数,例如:
re.sub(r'(\d+)\.[5-9]\d*', roundUp('\1'), line)
whereroundUp()
返回一个表示值的字符串\1 + 1
。
当然有一种方法可以\1
在替换期间增加 inline ,而无需循环匹配 from findall
,增加整数部分,然后用重新查找模式re.sub
并将其替换?