Python: Standardbibliotheken
Willemers Informatik-Ecke

Die Bibliothek string

Für die Zeichenketten stehen neben den Standardfunktionen noch eine Bibliothek zur Verfügung, die passenderweise string heißt. Wie bei der Nutzung jeder Bibliothekt muss diese importiert werden.
import string
Folgende Funktionen stehen zur Verfügung:

Suchen und Mustererkennung in Texten: Reguläre Ausdrücke

Die normale Suchfunktion des Moduls string ist schon ein guter Anfang. Aber manchmal soll es etwas mehr sein. Die Königsdisziplin in Sachen Suchen und Mustererkennung sind die regulären Ausdrücke. Allerdings sehen sie etwas abschreckend aus.

Bevor Sie anfangen können, die regulären Ausdrücke zu verwenden, zunächst die Bedeutung der Zeichen.

Platzhalter
Multiplikatoren
Zeichengruppen
Positionen

Mathematik: math

Die Bibliothek math liefert die wichtigsten Standardfunktionen, damit Python nicht hinter den billigsten Taschenrechnern zurückstehen muss.
Element Bedeutung
pi Die Zahl π
e Die Eulersche Zahl e
z = ceil(x) Die kleinste ganze Zahl größer oder gleich x
z = floor(x) Die größte ganze Zahl kleiner oder gleich x
y = fabs(x) Betragsfunktion (Vorzeichen auf Plus setzen)
y = log(x) Logarithmus von x
y = sqrt(x) Quadratwurzel von x
y = sin(x) Sinus von x
y = tan(x) Tangens von x
Neben dem Modul math gibt es noch einige andere Module, die wissenschaftliche Aktivitäten unterstützen.
numpy numerische Bibliothek
pylab wie MatLab eine Funktion zur Ausgabe mathematischer Zeichnungen
scipy Integrale, Gradientenoptimierung und genetische Algorithmen

Zufallszahlen: random

Zufallszahlen werden für die Verschlüsselung, für Simulationen und natürlich für Spiele benötigt. Die Bibliothek random liefert vor allem die Startfunktion seed() und die Funktion random(), die einen zufälligen Fließkommawert zwischen 0 und 1 liefert. Will man ganze Zahlen zwischen 1 und 6 haben, multipliziert man den Wert einfach mit 6, addiert 1 und schneidet die Nachkommastellen ab.
import random
random.seed()
print(random.random()) # eine Zufallszahl zwischen 0 und 1
for i in range(0,3,1): # Drei Wuerfe
    print(int(random.random()*6+1)) # Wuerfelsimulation
Wird der Funktion seed() ein Parameter übergeben, werden die Zufallszahlen immer die gleiche Sequenz aufweisen.

Tatsächlich können Sie allerdings eine Würfelsimulation durch die Funktion randint einfacher haben.

print(random.randint(1, 6))
Der erste Parameter legt die Untergrenze und der zweite Parameter den höchsten Wert an.

Datumsbibliothek

Das Modul datetime

Das Modul datetime liefert einen einfachen Zugriff auf Datums- und Zeitfunktionen.

Ein Datum kann über den Aufruf von datetime.date() erzeugt werden. Als Parameter können Sie Jahr, Monat und Tag des Datums übergeben.

import datetime
tollertag = datetime.date(1991,5,31)
print(tollertag)
Die Funktion today() liefert eine Variable mit dem heutigen Datum zurück. Im Beispiel wird gezeigt, wie Sie den Inhalt in der deutschen Form darstellen. Dazu können Sie auf die Attribute day, month und year zugreifen. Über die format-Funktion (siehe Abschnitt~format) können Sie die Ausrichtung leicht gestalten.
import datetime
heute = datetime.date.today()
print("{}.{}.{}".format(heute.day,heute.month,heute.year))
Analog verhält es sich mit dem Zugriff auf die aktuelle Zeit. Dazu rufen Sie die Funktion datetime.datetime.now() auf. Über die Attribute hour, minute, second und microsecond können Sie die Bestandteile der Uhrzeit auslesen.
import datetime
now = datetime.datetime.now()
print("{}:{}:{}.{}".format(now.hour,now.minute,now.second,now.microsecond))
Der Wochentag eines Datums wird über die Funktion weekday() ermittelt. Die Funktion liefert eine 0 für den Sonntag und eine 6 für den Samstag.
import datetime
wochentag = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]
heute = datetime.date.today()
print(wochentag[heute.weekday()])
Wenn Sie zwei Tagesdaten mit einem einfachen Minuszeichen voneinander abziehen, erhalten Sie eine Variable vom Typ timedelta. Sie können andererseits eine Variable vom Typ timedelta auf ein Datum mit einem Pluszeichen aufaddieren und erhalten wieder ein Datum. Wenn Sie einfach 14 Tage aufaddieren wollen, verwenden Sie den Konstruktor von timedelta und übergeben Sie diesem die Tage. Das Attribut days liefert die Anzahl der Tage eines Objekts vom Typ timedelta. Sie sehen den Umgang mit diesen Funktionen an dem folgenden Beispiel.
import datetime
tage = datetime.date.today() - datetime.date(2014,10,12)
print(type(tage)) # meldet den Typ datetime.timedelta
zahltag = datetime.date.today()+datetime.timedelta(14)
diff = zahltag - heute
print(diff.days)

Umwandlung in Zeichenketten

Manchmal muss es eine Zeichenkette sein. Beispielsweise werden gern Dateinamen aus dem aktuellen Datum gebildet.

import datetime
heute = datetime.datetime.today()
format = "%Y-%m-%d-%H%M%S"
strheute = "backup-".heute.strftime(format)
Das Ergebnis wäre dann beispielsweise: 2020-07-21-083341

Der String kann wieder zurück in ein Datum verwandelt werden:

readheute = datetime.datetime.strptime(strheute, "%Y-%m-%d-%H%M%S")
print(readheute.day)
Das Ergebnis ist nun 21, also der Tag des Datums.

Die Prozent-Tags bedeuten:

Tag Bedeutung
%b Monatskürzel (Feb)
%B Monatsname
%m Monatszahl (zweistellig)
%d Monatstag (zweistellig)
%H Stunde (0-23)
%M Minute (0-59)
%S Sekunde (0-59)
%Y Jahreszahl (vierstellig)

Das klassische Modul time

Viele Programmierer kennen die Struktur time und die passenden Funktionen, die bereits bei den alten UNIX-Maschinen eingeführt wurde und seither als POSIX-Standard große Verbreitung fand. Viele andere Bibliotheken orientieren sich daran. Auch Python bietet time an.

UNIX zählt die Zeit in Sekunden seit dem 1.1.1970, also etwa dem Zeitpunkt, seit es UNIX gibt. Da es sich um einfachen Zahlenwert handelt, ist der Umgang damit relativ einfach. Lediglich die Umrechnung in die unter Menschen üblichen Kalenderdaten und Uhrzeiten ist etwas mühselig. Das Beispiel ermittelt den jeweils aktuellen UNIX-Zeitstempel:

import time
print(time.time())
Die meisten Menschen werden entnervt reagieren, wenn sie diese Zahl als Antwort auf die Frage nach der aktuellen Uhrzeit bekommen. Dabei ist das völlig unverständlich. Sie müssten doch nur den Zeitstempel durch die Funktion localtime() in eine time_struct überführen.
import time
loctime = time.localtime(time.time())
print(loctime.tm_hour, loctime.tm_min)
Attribut Bedeutung
tm_year Jahr
tm_mon Monat (1-12)
tm_mday Tag des Monats (1-31)
tm_hour Stunde (0-23)
tm_min Minute (0-59)
tm_sec Sekunde (0-59)
tm_wday Wochentag (0-6) 0 ist Sonntag
tm_yday Tag im Jahr (0-366)
tm_isdst Sommerzeit (1), Winterzeit (0), unbekannt (-1)

Schlafenszeit

Nicht ganz passend findet sich auch die Funktion sleep() in dem Modul time, das sich ansonsten nur mit der Ermittlung von Datum und Uhrzeit befasst. Die Funktion sleep() stoppt den aktuellen Programmablauf um die Zahl von Sekunden, die als Parameter übergeben wird. Da auch Fließkommazahlen erlaubt sind, können Sie den Ablauf auch für eine zehntel Sekunde unterbrechen.
import time
time.sleep(5) # unterbricht den Ablauf fuer 5 Sekunden