如何在以python中的特定字符开头的字符串列表中选择特定数量的元素?

时间:2020-03-20 08:54:36

标签: python python-3.x string list indexing

我有一个包含以以下日期开头的文件的列表:

["CITY_NAME_20170102", "CITY_NAME_20170103", ...]

现在,我想运行一个单行代码以从此长列表中为每个特定城市只选择特定年份。首先想到的只是运行一个for循环并编写一个if子句以遍历所有文件名,并仅追加以特定年份和城市开头的文件名。但是,我敢肯定有一种更简单的方法可以做到这一点。

例如,是否有任何功能可以搜索所有元素并为我提供一个从2017年开始的功能?

2 个答案:

答案 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']