превратить дату, разделенную периодами, в дату и время - PullRequest
0 голосов
/ 03 октября 2019

У меня есть примерный список дат, который взят из большей выборки данных. Некоторые даты форматируются различными способами, например 01.11.18 против 12.23.1983. Моя цель - конвертировать эти даты в datetime формат

dates = ['01.11.18', '2.2.17', '02.02.18', '12.1.16', '12.23.1943', '12.23.19']

. Мой желаемый результат - datetime формат.

Для этого я попробовал следующее

from datetime import datetime
type_datetime = []
for d in dates:
    datetime_object = datetime.strptime(d, '%m/%d/%Y')
    type_datetime.append(datetime_object)

Но я получаю сообщение об ошибке

ValueError: time data '01.11.18' does not match format '%m/%d/%Y'

Как изменить код, чтобы получить желаемый результат?

1 Ответ

1 голос
/ 03 октября 2019

Strptime следует за этой таблицей форматирования .

Итак, поскольку у вас есть несколько форматов, одним из решений является составление списка возможных форматов даты и попытка одного за другим:

type_datetime = []
formats = ("%m.%d.%y", "%m.%d.%Y")
for d in dates:
    datetime_object = None
    for f in formats:
        try:
            datetime_object = datetime.strptime(d, f)
            break
        except:
            continue
    type_datetime.append(datetime_object)
...