我的正则表达式
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'
这假设您希望保留多个.
或者您不希望超过一个。