Pythons strptime() meistern: Präzises Parsen von Datumsstrings
Python strptime(): Strings in Datetime-Objekte konvertieren
Dieser Leitfaden zeigt, wie Sie mit Pythons datetime.strptime()-Methode Datetime-Objekte aus Strings erstellen – mit praktischen Beispielen und einer umfassenden Formatcode-Referenz.
Video: Daten und Zeiten in Python
Sehen Sie sich das offizielle Python-Tutorial an, um Ihr Verständnis der Datetime-Verarbeitung zu vertiefen.
Die strptime()-Methode erstellt ein datetime-Objekt aus einem String, der einem angegebenen Format folgt.
Hinweis: Nicht jeder String kann geparst werden; die Eingabe muss exakt dem Formatcode entsprechen.
Beispiel 1: Einfaches Datumsstring konvertieren
from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
print("type of date_string =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("type of date_object =", type(date_object))
Bei der Ausgabe erhalten Sie:
date_string = 21 June, 2018 type of date_string = <class 'str'> date_object = 2018-06-21 00:00:00 type of date_object = <class 'datetime.datetime'>
Wie funktioniert strptime()?
Die Klassenmethode strptime() akzeptiert zwei Argumente:
- Der zu parsende String.
- Der Formatcode, der das Layout des Strings beschreibt.
Basierend auf diesen Eingaben gibt die Methode ein datetime-Objekt zurück, das denselben Zeitpunkt repräsentiert.
Im obigen Beispiel bedeutet der Formatcode %d %B, %Y:
%d– null-gefüllter Tag des Monats (01–31).%B– vollständiger Monatsname (Januar–Dezember).%Y– vierstelliges Jahr.
Beispiel 2: Mehrdeutige Daten parsen
from datetime import datetime
dt_string = "12/11/2018 09:15:32"
# Annahme: Tag/Monat/Jahr-Format
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)
# Annahme: Monat/Tag/Jahr-Format
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)
Das Programm erzeugt:
dt_object1 = 2018-11-12 09:15:32 dt_object2 = 2018-12-11 09:15:32
Vollständige Liste der Formatcodes
Die folgende Tabelle fasst alle Direktiven zusammen, die Sie mit strptime() verwenden können. Für die vollständige Dokumentation verweisen Sie auf Pythons offiziellen datetime-Modul-Leitfaden.
| Direktive | Bedeutung | Beispiel |
|---|---|---|
%a | Abgekürzter Wochentagsname. | So, Mo, ... |
%A | Vollständiger Wochentagsname. | Sonntag, Montag, ... |
%w | Wochentag als Dezimalzahl. | 0, 1, ..., 6 |
%d | Tag des Monats (null-gefüllt). | 01, 02, ..., 31 |
%-d | Tag des Monats (keine Füllung). | 1, 2, ..., 30 |
%b | Abgekürzter Monatsname. | Jan, Feb, ..., Dez |
%B | Vollständiger Monatsname. | Januar, Februar, ... |
%m | Monatsnummer (null-gefüllt). | 01, 02, ..., 12 |
%-m | Monatsnummer (keine Füllung). | 1, 2, ..., 12 |
%y | Jahr ohne Jahrhundert (null-gefüllt). | 00, 01, ..., 99 |
%-y | Jahr ohne Jahrhundert (keine Füllung). | 0, 1, ..., 99 |
%Y | Jahr mit Jahrhundert. | 2013, 2019, ... |
%H | Stunde (24-Stunden-Uhr, null-gefüllt). | 00, 01, ..., 23 |
%-H | Stunde (24-Stunden-Uhr, keine Füllung). | 0, 1, ..., 23 |
%I | Stunde (12-Stunden-Uhr, null-gefüllt). | 01, 02, ..., 12 |
%-I | Stunde (12-Stunden-Uhr, keine Füllung). | 1, 2, ..., 12 |
%p | Lokale AM- oder PM-Bezeichnung. | AM, PM |
%M | Minute (null-gefüllt). | 00, 01, ..., 59 |
%-M | Minute (keine Füllung). | 0, 1, ..., 59 |
%S | Sekunde (null-gefüllt). | 00, 01, ..., 59 |
%-S | Sekunde (keine Füllung). | 0, 1, ..., 59 |
%f | Mikrosekunde (null-gefüllt). | 000000 – 999999 |
%z | UTC-Offset (+HHMM oder –HHMM). | |
%Z | Zeitzonenname. | |
%j | Tag des Jahres (null-gefüllt). | 001, 002, ..., 366 |
%-j | Tag des Jahres (keine Füllung). | 1, 2, ..., 366 |
%U | Wochennummer (Sonntag zuerst). | 00, 01, ..., 53 |
%W | Wochennummer (Montag zuerst). | 00, 01, ..., 53 |
%c | Lokales Datum & Uhrzeit. | Mon Sep 30 07:06:05 2013 |
%x | Lokales Datum. | 09/30/13 |
%X | Lokale Uhrzeit. | 07:06:05 |
%% | Ein wörtliches Prozentzeichen. | % |
Häufiger Fehler: ValueError
Wenn String und Formatcode nicht übereinstimmen, löst strptime() einen ValueError aus. Zum Beispiel:
from datetime import datetime
date_string = "12/11/2018" # Falsches Format – erwartet Tag Monat Jahr
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object =", date_object)
Die Ausführung dieses Codes erzeugt:
ValueError: time data '12/11/2018' does not match format '%d %m %Y'
Empfohlene Weiterlektüre: Python strftime()
Python
- Python-Schlüsselwörter & Bezeichner: Reservierte Wörter & Benennungskonventionen meistern
- Python-Datentypen meistern: Praxisleitfaden
- Python-Operatoren meistern: Umfassender Leitfaden
- Python pass-Statement meistern: Praxisleitfaden
- Python-Funktionsargumente meistern: Positional, Keyword & Default-Parameter
- Python-Dictionaries meistern: Erstellung, Manipulation und fortgeschrittene Techniken
- Python Iteratoren meistern: Funktionsweise und Erstellung eigener Iteratoren
- Python Closures erklärt: Wie verschachtelte Funktionen Variablen erfassen
- Python Reguläre Ausdrücke (re Modul) – Ein praktischer Leitfaden
- Python datetime meistern: Praktischer Leitfaden zu Datumsangaben, Zeiten und Zeitzonen