Как выбрать указанное c количество элементов в списке строк, которые начинаются с указанного c символа в python? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть список, содержащий файлы, которые начинаются с даты, например:

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

Теперь я хочу запустить однострочный код, чтобы выбрать только определенные c лет из этого длинного списка для каждого Speci c город. Единственное, что приходит мне в голову в первом случае, - это запустить для l oop и написать условие if для go по всем именам файлов и добавить только те, которые начинаются с указанных c year и city. Но я уверен, что есть более простой способ сделать это.

Есть ли какая-нибудь функция, которая может искать по всем элементам и давать мне, например, начиная с 2017 года?

Ответы [ 2 ]

4 голосов
/ 20 марта 2020

Чтобы извлечь год из данной строки, вы используете отрицательную индексацию.

Пример:

a="CITY_NAME_20170103"
a[-8:-4]
# '2017'

Pythoni c путь будет

[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))
0 голосов
/ 20 марта 2020

Это фактически то же самое, что вы упомянули.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...