我遇到了以下问题:
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']