正则表达式获得子goups



我遇到了以下问题:

change = "1,23 2,54 1,85 "
results = re.findall(r"((d+),(d+) )+((d+),(d+) )+", change)
print(results)

结果是:

('2,54 ', '2', '54', '1,85 ', '1', '85')

但我想要这样的东西:

('1,23 ', '1', '23', '2,54 ', '2', '54', '1,85 ', '1', '85')

不幸的是,我没有找到任何解决方案

重复正

则表达式组是多余的。您应该简单地使用 1 并只执行findall .我已经使用了itertools.chain但您也可以通过简单的列表理解来实现它。

change = "1,23 2,54 1,85 "
results = re.findall(r"((d+),(d+) )", change)
print(results)
# [('1,23 ', '1', '23'), ('2,54 ', '2', '54'), ('1,85 ', '1', '85')]
from itertools import chain
print(list(chain(*results)))
# ['1,23 ', '1', '23', '2,54 ', '2', '54', '1,85 ', '1', '85']
# simple list comprehension
print([single for group in results for single in group])
# ['1,23 ', '1', '23', '2,54 ', '2', '54', '1,85 ', '1', '85']

使用以下方法:

change = "1,23 2,54 1,85 "
results = [n for t in re.findall(r"((d+),(d+))", change) for n in t]
print(results)

输出:

['1,23', '1', '23', '2,54', '2', '54', '1,85', '1', '85']

最新更新