我正在尝试用整数替换字符串(1.0、2.0 等)中所有无用的浮点数。所以我会把像"15.0+abc-3"
这样的绳子变成"15+abc-3"
.你知道一种方法吗?
我希望你理解我的想法。如果你不随意问。
您可以使用re.sub
:
>>> s="15.0+abc-3"
>>>
>>> import re
>>> re.sub(r'b(d+).0+b',r'1',s)
'15+abc-3'
>>> s="15.0000+abc-333.0+er1102.05"
>>> re.sub(r'b(d+).0+b',r'1',s)
'15+abc-333+er1102.05'
d+
将匹配长度为 1 或更大的任何数字,并且在sub
函数中(d+).0
将匹配无用的小数零的数字。该数字将替换为第一组1
即您的数字(在捕获组 (d+)
内)。
b
是词边界使您的正则表达式与某些数字不匹配,例如 1102.05
!
(?<=d).0+b
您可以简单地使用它并通过re.sub
empty string
替换。
请参阅演示。
https://regex101.com/r/hI0qP0/22
import re
p = re.compile(r'(?<=d).0+b')
test_str = "15.0+abc-3"
subst = ""
result = re.sub(p, subst, test_str)