正则表达式将字符串内的浮点数与介于两者之间的任何字符或空格匹配



我的正则表达式

d+.*d+

我的字符串

4a 1 a2 3 21 12a3 123.12

我得到什么:

['21', '12', '123.12']

我需要什么:

412321123123.12

例如,当只有 123.12 时,我确实工作得很好,但是当我在两者之间添加空格或新字符时,它会将它们分开。我希望它跳过所有空格和字符,只提取在正确位置用"."分隔的数字。

删除所有不是数字或点的内容:

import re

result = re.sub('[^.d]', '', '4a 1 a2 3 21 12a3 123.12')
print(result)

输出

412321123123.12

无正则表达式的替代方案:

>>> s = '4a 1 a2 3 21 12a3 123.12'
>>> 
>>> ''.join(c for c in s if c.isdigit() or c == '.')
>>> '412321123123.12'

使用带有str.join的列表理解比生成器理解略快,即:

>>> ''.join([c for c in s if c.isdigit() or c == '.'])
>>> '412321123123.12'

这假设您希望保留多个.或者您不希望超过一个。

最新更新