14. Strings und Listen

Strings und Listen sind unsere Brot- und Butterdatenstrukturen. Wir wollen sehen, wie sie ineinander verwandelbar sind.

Zunächst gibt es die Funktion str, die aus so ziemlich allem einem String macht:

>>> str([3, "bla", ["liste"]])
"[3, 'bla', ['liste']]"

Das ist aber nicht immer das, was wir wollen. Wenn wir z.B. einen Satz aus mehreren Wörtern in einer Liste vorbereitet haben, wollen wir die einzelnen Wörter mit Leerzeichen verbunden ausgeben. Dazu gibt es die join-Methode von Strings, die als Argument eine andere Sequenz nimmt:

>>> l = ["Dies", "ist", "ein", "Satz"]
>>> " ".join(l)
'Dies ist ein Satz'
>>> print "\n".join(["Zeile1", "Zeile2"])
Zeile1
Zeile2

Umgekehrt können wir aus einem String eine Liste machen. Die Umkehrung von join ist split; ohne Argument teilt split an irgendwelchen Leerzeichen, mit Argument an Vorkommen des entsprechenden Strings:

>>> "Dies ist ein Satz".split()
['Dies', 'ist', 'ein', 'Satz']
>>> "/usr/src/Python-2.3".split("/")
['', 'usr', 'src', 'Python-2.3']
>>> "f1<sep/>f2<sep/>f3".split("<sep/>")
['f1', 'f2', 'f3']

Analog zu str gibt es eine Funktion list, die aus ihrem Argument eine Liste macht (das geht natürlich nur, wenn es eine Sequenz oder etwas ähnliches ist):

>>> list("Wort")
['W', 'o', 'r', 't']

Dabei werden die einzelnen Elemente der Sequenz die Elemente der Liste. Wenn man wollte, könnte man so Strings elementweise manipulieren:

>>> l = list("Wort")
>>> l[0] = "T"
>>> "".join(l)
'Tort'

Allerdings gibt es für Manipulationen dieser Art mächtigere und schnellere Werkzeuge in Python.

Übungen zu diesem Abschnitt

Ihr solltet euch wenigstens an den rötlich unterlegten Aufgaben versuchen

(1)

Was müsstet ihr tun, wenn ihr die Unix-Pfadtrenner (nämlich die Schrägstriche) etwa im Beispiel "/usr/src/Python-2.3" durch DOS-Pfadtrenner (nämlich Backslashes) ersetzen wollt und die replace-Methode für Strings bei eurem Python kaputt gegangen wäre? (Tipp: split und join kombinieren, den Backslash kriegt ihr mit "[[").


Markus Demleitner

Copyright Notice