У меня есть список Python
Year= [‘1997JAN’, ‘1997FEB’, ‘1997MAR’‘1997APR’………………………’2021SEP’’2021OCT’]
Я хотел бы извлечь из приведенного выше списка только годы, но не месяцы
Как я могу извлечь только годы?
Year = [1997,1997,1997,…………………2021,2021]
Год = [int(i[:4]) для i в году]
Если у вас есть эти даты:
dates = ['1997JAN', '1997FEB', '1997MAR','1997APR', '2022NOV']
Просто используйте это, чтобы извлечь годы из дат:
years = [int(x[:4]) for x in dates]
Вероятно, следует ввести int() для преобразования в целые числа, чтобы вы соответствовали ожидаемому результату от OP.
это решение не будет работать после 31 декабря 9999 года. Но это больше не будет нашей проблемой, так что вперед.
Вы импортируете и используете модуль re
:
import re
Year= ['1997JAN', '1997FEB', '1997MAR','1997APR','2021SEP','2021OCT']
Years_only=[re.findall(r'\d+', year)[0] for year in Year]
Years_only
Вывод
['1997', '1997', '1997', '1997', '2021', '2021']
Сначала вы можете извлечь числа с помощью filter
и str.isdigit
следующим образом:
input = '1997JAN'
output = ''.join(filter(str.isdigit, input))
print(output)
# '1997' (This is still string)
Теперь мы должны привести его к целому числу:
output = int(''.join(filter(str.isdigit, input)))
print(output)
# 1997
Вы можете сделать это во всех элементах в списке с картой:
output = list(map(lambda input: int(''.join(filter(str.isdigit, input))), Year))
print(output)
# [1997,1997,1997,…………………2021,2021]
что ты уже испробовал?