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)
我正在尝试 替换 无用的浮点数 字符串 (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)