Получить год из неизвестного формата даты, используя python - PullRequest
0 голосов
/ 09 мая 2020

Итак, я запрашиваю у сервера указанные c данные, и мне нужно извлечь год из возвращенного поля даты, однако поле даты меняется, например:

2009
2009-10-8
2009-10
2017-10-22
2017-10

Очевидное было бы извлечь дату в массив и получить максимум: (но есть проблема)

year = max(d.split('-'))

по какой-то причине это выдает ложные срабатывания, поскольку 22, кажется, являются максимальными стихами 2017 года, также, если в будущем вызовы на сервер приводят к тому, что дата сохраняется как «2019/10/20», это также вызовет проблемы.

Ответы [ 2 ]

4 голосов
/ 09 мая 2020

Проблема в том, что, а 2017 > 22, '2017' < '22' потому что это сравнение строк. Вы можете сделать это, чтобы решить эту проблему:

year = max(map(int, d.split('-')))

Но вместо этого, если вы не возражаете, если Long Now Foundation осуждает вас, рассмотрите возможность использования регулярного выражения для извлечения любых 4 -di git номер:

match = re.search(r'\b\d{4}\b', d)
if match:
    year = int(match.group(0))
2 голосов
/ 09 мая 2020

Я бы использовал библиотеку python -dateutil , чтобы легко извлечь год из строки даты:

from dateutil.parser import parse

dates = ['2009', '2009-10-8', '2009-10']

for date in dates:
    print(parse(date).year)

Вывод:

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