Python:用字符串中的整数替换 "wrong" 浮点数

Python: Replace "wrong" floats by integers inside string

我正在尝试 替换 无用的浮点数 字符串 (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'',s)
'15+abc-3'

>>> s="15.0000+abc-333.0+er1102.05"
>>> re.sub(r'\b(\d+)\.0+\b',r'',s)
'15+abc-333+er1102.05'

\d+ 将匹配任何长度为 1 或更大的数字,在 sub 函数中 (\d+)\.0 将匹配无用小数的数字 zero.that 将被第一个替换组 </code> 这是你的号码(在捕获组 <code>(\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)