2016-11-16 3 views
-1

Ich habe Zeichenfolge, die ein Datum enthält, und ich versuche zu Formatiere das Datumsformat mit strptime(), aber mit dem folgenden Fehler.ValueError: Zeitdaten 'abc-xyz-listener.log.2016-10-18-180001' passt nicht zum Format '% Y-% m-% d'

import datetime 
datetime.datetime.strptime("abc-xyz-listener.log.2016-10-18-180001", "%Y-%m-%d") 

Ich erhalte die folgenden:

Traceback (most recent call last): 
    File "<pyshell#3>", line 1, in <module> 
    datetime.datetime.strptime("abc-xyz-listener.log.2016-10-18-180001", "%Y-%m-%d") 
    File "C:\Python27\lib\_strptime.py", line 325, in _strptime 
    (data_string, format)) 
ValueError: time data 'abc-xyz-listener.log.2016-10-18-180001' does not match format '%Y-%m-%d' 

Kann mir jemand helfen, wo ich Fehler mache. Vielen Dank im Voraus

Antwort

2

Die Fehlermeldung ist ziemlich klar: "abc-xyz-listener.log.2016-10-18-180001" ist nicht im Format "%Y-%m-%d". Es gibt nicht wirklich viel hinzuzufügen.

Sie können mit regex der zusätzlichen Sachen loszuwerden:

import re 
import datetime 

string = 'abc-xyz-listener.log.2016-10-18-180001' 

date_string = re.search(r'\d{4}-\d{2}-\d{2}', string).group() 

print(date_string) 
# 2016-10-18 

print(datetime.datetime.strptime(date_string , "%Y-%m-%d")) 
# 2016-10-18 00:00:00 

Sie können auch re.search einige try-except falls hinzufügen nicht in der Lage ist, ein gültiges Datum in der Eingabezeichenfolge zu finden.

Verwandte Themen