抱歉,如果这已经得到回答-我试着查找它,但可能我的搜索条件(与我的标题相同)是坏的。
假设我有一个这样的字符串,我无法控制它:
astr = "A 5.02654824574 (14.710000000000008, -19.989999999999995, -0.8) <-> s[10]: A 5.02654824574 (-29.11999999999999, 52.78, -0.8)"
我想处理这个字符串,这样它的浮点数以任意数量的浮点精度显示,比如3位小数。因为这将在一个字符串级别上工作,所以我不希望该过程解释正确的舍入-仅仅是为了删除小数点字符串字符。
我知道我能做到,就像
Python: Extract multiple float numbers from string
:
import re
p = re.compile(r'\d+\.\d+')
for i in p.findall(astr): print i
... 哪个打印:
5.02654824574
14.710000000000008
19.989999999999995
0.8
5.02654824574
29.11999999999999
52.78
0.8
.... 然而,我对在搜索和替换中需要做的正则表达式捕获感到迷茫
n_float_precision_decimals = 4
,-我将得到这个字符串作为输出(上面的字符串作为输入):
"A 5.0265 (14.7100, -19.9899, -0.8) <-> s[10]: A 5.0265 (-29.1199, 52.78, -0.8)"
所以基本上,regex会考虑到,如果已经有少量的小数,它就不会截断小数。
一次就可以做到吗
re.sub
操作,而不必编写显式
for
循环,并手动构造输出字符串?