2016-11-04 2 views
1

Вот некоторые несколько строк моего зарегистрированного файлаPython Дата Ошибка

10/21/2015 10:16:42 AM Following hmac:c35330404902c0b1bb5c6d0718407ea12b25a464433bd1e69152ccc0e0b89c9f with is already in database so dropping 
11/21/2015 10:16:42 AM The data for the duplicate Hmac is : HF 13300100012015-06-15 19:30:21+0000+ 12.61 0.010 1686.00 
07/21/2015 10:16:42 AM Following hmac:84d9cdb2145b7c3e0fa2d099070b7bd291c652f30ca25c69240e33ebbd2b8677 with is already in database so dropping 
07/21/2016 10:16:42 AM The data for the duplicate Hmac is : HF 13300100012015-06-15 20:16:18+0000+ 12.60 0.045 1686.00 
07/20/2016 10:16:42 AM Following hmac:a24d19d340651e694bff854ae7469dd779b60037228bf047d8f372dee4a731e0 with is already in database so dropping 
07/20/2016 10:16:42 AM The data for the duplicate Hmac is : HF 13300100012015-06-15 20:31:25+0000+ 12.62 0.045 1685.00 
07/20/2016 10:16:42 AM Following hmac:4e239a4b69108833e9cbc987db2014f9137679860df0ca8efdf7d09c4897d369 with is already in database so dropping 
07/19/2016 10:16:42 AM The data for the duplicate Hmac is : HF 13300100012015-06-15 20:46:27+0000+ 12.61 0.040 1685.00 

Моя цель состоит в том, чтобы петли по линиям и подсчета возврата линий конкретных символов, включая HMAC. Я уже вычислил общий счет, но хочу вернуть количество строк за последний год. Попытка извлечь дату часть каждой строки дает мне ошибку

ValueError: непрореагировавший данные остаются:

, который я попробовал, но не могу найти решение. Вот мой код от даты и времени даты импорта от времени даты и времени импорта от даты и времени импорта DateTime от даты и времени импорта timedelta импорт ОС

def fileCount(fileName): 

    with open(fileName) as FileObj: 

     Count = 0 
     todayDate = date.today() 
     OneYear = str(todayDate - timedelta(days=365)) 
     OneMonth = str(todayDate - timedelta(days=30)) 
     ThreeMonths = str(todayDate - timedelta(days=90)) 

     while True: 

      line = FileObj.readline() 

      Lines = "-".join(line[:11].split("/")) 

      convertDate = datetime.strptime(Lines, '%m-%d-%Y') 

      print convertDate 

      if not line: 
       break 
      if "Following hmac" in line: 

       Count += 1 

     print "The total count is ", Count 

# Call The function 
def main(): 

    filePath = 'file.txt' 

    fileCount(filePath) 

if __name__ == "__main__": 

    main() 

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

ответ

0

Индекс остановки для вашего фрагмента включает в себя конечное пространство, которое не учитывается в предоставленном формате даты.

Вы должны полосы пространство:

>>> datetime.strptime(Lines.rstrip(), '%m-%d-%Y') 
datetime.datetime(2015, 10, 21, 0, 0) 

Или изменить индекс к 10 вместо 11 исключить пространство целиком:

Lines = "-".join(line[:10].split("/")) 

Учет дополнительного пространства в вашем формате также другое исправление:

convertDate = datetime.strptime(Lines, '%m-%d-%Y ') 

Вы можете обрабатывать другие ошибки, такие как пустая строка или строки без строки даты посредством использования try/except:

lines = "-".join(line[:10].split("/")) 
try: 
    convert_date = datetime.strptime(lines, '%m-%d-%Y') 
    print convert_date 
except ValueError: 
    print 'This line has a problem:', lines 
+0

@ Моисей Koledoye. Спасибо за ваш быстрый ответ. Попытка любого из предлагаемых решений дает еще одну ошибку ValueError: данные времени '' не соответствуют формату '% m-% d-% Y'. Я использую python 2.7 – user1895915

+0

У вас есть пустые строки в файле. Вы должны разбирать строки, содержащие строку даты. Оберните эту строку кода в 'try/except ValueError'. См. Обновление в ответ. –

Смежные вопросы