datetime из строки в Python, строковый формат - PullRequest
39 голосов
/ 01 марта 2012

Функция для получения datetime из строки, datetime.strptime(date_string, format) требует формат строки в качестве второго аргумента.Есть ли способ построить дату и время из строки, не зная точного формата и не пытаясь угадать Python?

Ответы [ 4 ]

68 голосов
/ 01 марта 2012

Используйте библиотеку dateutil .

Я уже использовал dateutil в качестве необходимой библиотеки для обработки часовых поясов
(См. Преобразование строки даты и времени UTC в локальную дату и время и Как мне преобразовать местное время в UTC в Python? )

И я только что понял, что есть поддержка разбора даты:

import dateutil.parser
yourdate = dateutil.parser.parse(datestring)

(См. также Как перевести строку даты и времени ISO 8601 в объект даты и времени Python? )

12 голосов
/ 01 августа 2014

Может обойтись простой функцией, если проверять только даты.

def get_date(s_date):
    date_patterns = ["%d-%m-%Y", "%Y-%m-%d"]

    for pattern in date_patterns:
        try:
            return datetime.datetime.strptime(s_date, pattern).date()
        except:
            pass

    print "Date is not in expected format: %s" %(s_date)
    sys.exit(0)
7 голосов
/ 01 марта 2012

Еще до того, как я стал парнем с питоном, я был парнем из Perl. Одна из вещей, которые я всегда пропускал, но не видел ничего похожего на это: Date :: Manip . Этот модуль может извлечь хорошую временную метку из небольшого количества кусочков. Я почти подозреваю, что его автор заключил сделку с дьяволом.

Я столкнулся с несколькими вещами, которые наносят удар по нему в Python:

Если вы найдете что-нибудь лучше, я бы хотел услышать об этом.

1 голос
/ 24 февраля 2019

Вы можете использовать DateFinder, он будет обнаруживать все типы естественного стиля дат.

import datefinder # Модуль, используемый для поиска другого стиля даты со временем

string_value = " created 01/15/2005 by ACME inc.and associates.January 4th,2017 at 8pm"
matches = datefinder.find_dates(string_value)            
for match in matches:
    print("match found ",match)

выход

match found  2005-01-15 00:00:00
match found  2017-01-04 20:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...