我正在尝试获取具有以下结构的值列表: 字数 数字的一部分正好有两个数字,第二个有浮点值。这是一个例子
abcd 01 23,456,789 efgh 01 23,456,789
这是我目前的模式:
re.findall("([a-zá-úA-Z]+)([0-9,.][0-9,.])([0-9,.]+)"
但它不起作用。给我 []
结果将是:
[ abcd 01 23,456,789,
efgh 01 23,456,789 ]
谢谢。
正如@Scott Hunter在评论中提到的,你忘记了空格。只需添加它们即可完成工作。
以下正则表达式不假设固定长度,它更健壮一些。
import re
data = "abcd 01 23,456,789 efgh 01 23,456,789"
output = re.findall("([a-zá-úA-Z]+)s(d+)s(d+[,]d+[,]d+)", data)
print(output)
# [('abcd', '01', '23,456,789'), ('efgh', '01', '23,456,789')]
请考虑以下解决方案:
import re
data = 'abcd 01 23,456,789 efgh 01 23,456,789'
pattern = re.compile(r'[a-zá-úA-z]+s[0-9]{2}s[0-9,]+')
matches = re.findall(pattern, data)