我有一个包含以以下日期开头的文件的列表:
["CITY_NAME_20170102", "CITY_NAME_20170103", ...]
现在,我想运行一个单行代码以从此长列表中为每个特定城市只选择特定年份。首先想到的只是运行一个for循环并编写一个if子句以遍历所有文件名,并仅追加以特定年份和城市开头的文件名。但是,我敢肯定有一种更简单的方法可以做到这一点。
例如,是否有任何功能可以搜索所有元素并为我提供一个从2017年开始的功能?
答案 0 :(得分:4)
要使用负索引从字符串中提取年份。
示例:
a="CITY_NAME_20170103"
a[-8:-4]
# '2017'
Pythonic的方式应该是
[s for s in list_of_strings if x[-8:-4] == '2017'] #Suggested by @schwobaseggl in the comments
您还可以使用filter
获取年份为 2017
list(filter(lambda x: x[-8:-4]=='2017',list_of_strings))
答案 1 :(得分:0)
这实际上与您提到的相同。
L = ["CITY_NAME_20170102", "CITY_NAME_20160103"]
year = 2017
# one-line code
L_out = [elem for elem in L if year == L.split("_")[-1][0:4]]
输出:['CITY_NAME_20170102']