【问题标题】:How to select a specific number of elements in a list of strings that start with a specific character in python?如何在python中以特定字符开头的字符串列表中选择特定数量的元素?
【发布时间】:2020-03-20 08:54:36
【问题描述】:

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

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

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

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

【问题讨论】:

  • 没有功能。您必须循环并进行条件检查。您可以对“单行代码” 进行列表推导,但这些仍然是不可避免的。

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


【解决方案1】:

要使用负索引从字符串中提取年份。

例子:

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))

【讨论】:

  • @schwobaseggl 同意。 列表理解在这里要好得多。感谢您指出。编辑答案。
【解决方案2】:

这实际上与您提到的相同。

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

【讨论】:

    猜你喜欢
    • 2017-11-04
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 2021-10-07
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多