我的正则表达式
\d+\.*\d+
我的字符串
4a 1 a2 3 21 12a3 123.12
我得到的是:
['21', '12', '123.12']
我需要什么:
412321123123.12
例如,当只有123.12时,我工作得很好,但是当我在它们之间添加空格或新字符时,它们会将它们分开。我希望它跳过所有空格和字符,只提取以“。”分隔的数字。在正确的位置。
答案 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'
这假设您要保留多个.
或不希望保留多个。