我正在尝试整数替换 字符串(1.0,2.0等)中的所有无用浮动 > STRONG>。所以我会将"15.0+abc-3"
之类的字符串转换为"15+abc-3"
。
你知道这样做的方法吗?
我希望你理解我的想法。如果你没有随意问。
答案 0 :(得分:1)
您可以使用>>> 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+
sub
将匹配长度为1或更长的任何数字,而(\d+)\.0
函数\1
将匹配无用的十进制零数字。这将被第一组{{1这是你的号码(在捕获组(\d+)
内)。
并且\b
是单词边界,使您的正则表达式与1102.05
之类的某些数字不匹配!
答案 1 :(得分:0)
(?<=\d)\.0+\b
您可以简单地使用此功能,并通过empty string
替换为re.sub
。
参见演示。
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)