我有以下 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']
Run Code Online (Sandbox Code Playgroud)
如何将其分成 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']
Run Code Online (Sandbox Code Playgroud)
该列表根据年份(即 2000 年)之前的单词进行划分...
我知道我应该在 python 中使用正则表达式,但不知道该怎么做。此外,该解决方案需要可扩展,并且不依赖于实际名称,例如 chattisgarh
您可以在这里使用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])
Run Code Online (Sandbox Code Playgroud)
正则表达式(.+)_\d{4}匹配一组至少一个字符(这就是我们分组的依据),后跟下划线和 4 位数字。
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |