Что делать, если некоторые значения даты и времени не соответствуют формату? - PullRequest
0 голосов
/ 16 апреля 2019

У меня проблемы с большими данными с использованием большого количества CSV-файлов. Во втором столбце есть время данных, и я просто хочу прочитать данные. Я использовал

dt1=list1[1][1]
dt_obj1=datetime.datetime.strptime(dt1, '%Y-%m-%d %H:%M:%S')

и после этого first_date=dt_obj1.date() и это сработало хорошо. Проблема в том, что есть несколько (всего 10 из более миллиона) записей, где вместо даты и времени есть только дата, поэтому она не соответствует формату. У вас есть идеи, как я могу просто прочитать дату в этих записях (или игнорировать их)?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Вы всегда можете использовать try / catch, чтобы спроектировать способ чтения. Предположим, у вас есть все возможные форматы в списке formats, тогда вы можете сделать

dt = None
for format in formats:
    try:
        dt = datetime.datetime.strptime(dt, format)
        break
    except:
        pass

.Цикл, когда вы получаете правильный формат, в противном случае продолжайте пробовать возможные форматы.

В противном случае вы можете использовать внешнюю dateutil библиотечную функцию анализа parser.parse , которая может анализировать любую дату и времяформат независимо от формата

from dateutil import parser

print(parser.parse("1990-01-21 14:12:11"))
print(parser.parse("1990-01-21"))
#1990-01-21 14:12:11
#1990-01-21 00:00:00
0 голосов
/ 16 апреля 2019

Вы можете использовать библиотеку dateutil.Преимущество использования этой библиотеки в том, что вам не нужно беспокоиться о формате.Его парсер автоматически выберет формат, соответствующий вашим данным.

from dateutil.parser import *
dt_1 = parse("Sat Oct 11 17:13:46 UTC 2003")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...