正则表达式匹配字符串内的浮点数,中间包含任何字符或空格

时间:2018-10-24 15:09:19

标签: python regex

我的正则表达式

\d+\.*\d+

我的字符串

4a 1 a2 3 21 12a3 123.12

我得到的是:

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

我需要什么:

412321123123.12

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

2 个答案:

答案 0 :(得分:3)

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

import re


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

输出

412321123123.12

答案 1 :(得分:3)

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

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

slightly faster相比,对str.join使用列表理解比对生成器的理解要SQRT (Transact-SQL)

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

这假设您要保留多个.或不希望保留多个。