我有以下 python 列表:
['chhattisgarh_2015_aa.csv', 'chhattisgarh_2016_aa.csv', 'daman_and_diu_2000_aa.csv', 'daman_and_diu_2001_aa.csv', 'daman_and_diu_2002_aa.csv']
如何将它分成 2 个列表:
['chhattisgarh_2015_aa.csv', 'chhattisgarh_2016_aa.csv'] and ['daman_and_diu_2000_aa.csv', 'daman_and_diu_2001_aa.csv', 'daman_and_diu_2002_aa.csv']
列表根据年份之前的单词拆分,即 2000...
我知道我应该在 python 中使用正则表达式,但不确定该怎么做。此外,该解决方案需要可扩展且不依赖于实际名称,例如恰蒂斯加尔邦
最佳答案
你可以在这里使用itertools.groupby
:
import itertools
import re
list = ['chhattisgarh_2015_aa.csv', 'chhattisgarh_2016_aa.csv',
'daman_and_diu_2000_aa.csv', 'daman_and_diu_2001_aa.csv',
'daman_and_diu_2002_aa.csv']
grouped = itertools.groupby(sorted(list), lambda x: re.match('(.+)_\d{4}', x).group(1))
for (key, values) in grouped:
print(key)
print([x for x in values])
正则表达式 (.+)_\d{4}
匹配一组至少一个字符(这是我们分组的依据)后跟下划线和 4 位数字。
关于python - 基于正则表达式拆分python列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37912620/