Python:用字符串中的整数替换“错误”浮点数

时间:2015-06-14 18:47:33

标签: python string replace floating-point integer

我正在尝试整数替换 字符串(1.0,2.0等)中的所有无用浮动 STRONG>。所以我会将"15.0+abc-3"之类的字符串转换为"15+abc-3"。 你知道这样做的方法吗?

我希望你理解我的想法。如果你没有随意问。

2 个答案:

答案 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)