Operatoren und Funktionen

Die Operatoren und Funktionen, die mit Zeichenketten arbeiten, geben neue, vom Original abgeleitete Zeichenketten zurück. Die Operatoren (in, + und *) und eingebauten Funktionen (len, max und min) arbeiten mit Zeichenketten genauso wie mit Listen and Tupel.

>>> welcome = "Hello pythonistas!\n"
>>> 2 * welcome
'Hello pythonistas!\nHello pythonistas!\n'
>>> welcome + welcome
'Hello pythonistas!\nHello pythonistas!\n'
>>> "python" in welcome
True
>>> max(welcome)
'y'
>>> min(welcome)
'\n'

Indizierung und Slicing

Auch die Index- und Slice-Notation funktioniert auf die gleiche Weise, um einzelne Elemente zu erhalten:

>>> welcome[0:5]
'Hello'
>>> welcome[6:-1]
'pythonistas!'

Die Index- und Slice-Notation kann jedoch nicht verwendet werden, um Elemente hinzuzufügen, zu entfernen oder zu ersetzen, da Zeichenketten unveränderlich sind:

>>> welcome[6:-1] = "everybody!"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

Konvertierungen

Konvertieren von Zeichenketten in Zahlen

Ihr könnt die Funktionen int und float verwenden, um Zeichenketten in Ganzzahl- bzw. Fließkommazahlen zu konvertieren. Wenn eine Zeichenkette übergeben wird, die nicht als Zahl des angegebenen Typs interpretiert werden kann, lösen diese Funktionen eine ValueError-Ausnahme aus. Ausnahmen werden in Exceptions ausführlicher erklärt. Darüber hinaus könnt ihr int einen optionalen zweiten Parameter übergeben, der die numerische Basis angibt, die bei der Interpretation der Zeichenfolge verwendet werden soll:

 1>>> float("12.34")
 212.34
 3>>> float("12e3")
 412000.0
 5>>> int("1000")
 61000
 7>>> int("1000", base=10)
 81000
 9>>> int("1000", 8)
10512
11>>> int("1000", 2)
128
13>>> int("1234", 2)
14Traceback (most recent call last):
15  File "<stdin>", line 1, in <module>
16ValueError: invalid literal for int() with base 2: '1234'
Zeilen 5–8

Wird kein zweiter Parameter angegeben, rechnet int mit einer Basis von 10.

Zeilen 9, 10

1000 wird als Oktalzahl interpretiert.

Zeilen 11, 12

1000 wird als Dualzahl interpretiert.

Zeilen 13–16

1234 kann nicht als Ganzzahl auf der Basis 2 angegeben werden. Daher wird eine ValueError-Ausnahme ausgelöst.

Ändern von Zeichenketten mit Listenmanipulationen

Da str-Objekte unveränderlich sind, gibt es keine Möglichkeit, sie direkt zu verändern wie Listen. Ihr könnt sie jedoch in Listen umwandeln:

>>> palindromes = "lol level gag"
>>> palindromes_list = list(palindromes)
>>> palindromes_list.reverse()
>>> "".join(palindromes_list)
'gag level lol'

Objekte in Zeichenketten konvertieren

In Python kann fast alles in eine Zeichenkette mit der eingebauten Funktion str umgewandelt werden:

>>> data_types = [(7, "Data types", 19), (7.1, "Numbers", 19), (7.2, "Lists", 23)]
>>> (
...     "The title of chapter "
...     + str(data_types[0][0])
...     + " is «"
...     + data_types[0][1]
...     + "»."
... )
'The title of chapter 7 is «Data types».'

Das Beispiel verwendet str, um eine Ganzzahl aus der Liste data_types in eine Zeichenkette umzuwandeln, die dann wieder aneinanderhängt werden, um die endgültige Zeichenkette zu bilden.

Bemerkung

Während str meist verwendet wird, um für Menschen lesbare Texte zu erzeugen, wird repr() eher für Debugging-Ausgaben oder Statusberichte verwendet, z.B., um Informationen über die eingebaute Python-Funktion len() zu erhalten:

>>> repr(len)
'<built-in function len>'

Checks

  • Könnt ihr z.B. eine Zeichenkette mit einer ganzen Zahl addieren oder multiplizieren, oder mit einer Gleitkommazahl oder einer komplexen Zahl?

  • Welche der folgenden Zeichenketten können nicht in Zahlen umgewandelt werden und warum?

    • int("1e2")

    • int(1e+2)

    • int("1+2")

    • int("+2")