Pyton konvertera string till datetime

Trädvy Permalänk
Medlem
Plats
Osynliga Universitetet
Registrerad
Dec 2007

Pyton konvertera string till datetime

Go söndag!

Jag sitter och försöker konvertera en lista med strängar av följande art:
"Mon Mar 4 00:02:01 CET 2019"

Målet är att få ut enbart tidpunkt (HH:MM:SS) för att konvertera till datetime så att det går att använda med matplotlib. Problemet jag har med nedanstående kod är att mina regex-fynd inte kommer ut som en sträng som går att behandla. Får för närvarande följande fel:

ValueError: time data "['00:00:01']" does not match format '%H:%M:%S'

Jag har provat övriga re-verktyg, men något verkar vara fundamentalt fel.

datenew = [re.findall('\d{2}:\d{2}:\d{2}', item) for item in date1] date_time1 = [datetime.datetime.strptime(str(item), "%H:%M:%S") for item in datenew] print(date_time1[1])

Tack på förhand!

+++ Divide By Cucumber Error. Please Reinstall Universe And Reboot +++

"Real stupidity beats artificial intelligence every time." - Terry Pratchett, Hogfather

Trädvy Permalänk
Medlem
Plats
Hedesunda
Registrerad
Dec 2005
Trädvy Permalänk
Hedersmedlem
Plats
Uppsala
Registrerad
Jul 2001

Felet i din kod är att du får en lista med listor:

>>> [re.findall('\d{2}:\d{2}:\d{2}', item) for item in data] [['00:02:01'], ['21:33:20']]

Om strängarna alltid kommer matcha regexet så fungerar

datenew = [re.search('(\d{2}:\d{2}:\d{2})', item).group(1) for item in data]

Eftersom typen är datetime så får du dock galna datum, i de fall de används någonstans:

>>> date_time1 [datetime.datetime(1900, 1, 1, 0, 2, 1), datetime.datetime(1900, 1, 1, 21, 33, 20)]

X370 Taichi / R7 1700 @ 3.75 GHz 1.2 V / 2x8 GB 3200 MHz CL16 / MSI GTX 1070 Gaming, OC / Samsung 960 EVO 500 GB / Corsair RM650x
LG G6 (H870)

Trädvy Permalänk
Medlem
Plats
Osynliga Universitetet
Registrerad
Dec 2007

@Thomas: Du har såklart rätt, men jag fick det inte att fungera med serach/match heller när jag prövade själv. Jag hittade däremot ett inlägg på nätet som använde ett inbyggt verktyg i matplotlib, "dates".

import matplotlib.dates as mdates myFmt = mdates.DateFormatter('%H:%M') plt.gca().xaxis.set_major_formatter(myFmt)

+++ Divide By Cucumber Error. Please Reinstall Universe And Reboot +++

"Real stupidity beats artificial intelligence every time." - Terry Pratchett, Hogfather