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 von10
.- 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 Basis2
angegeben werden. Daher wird eineValueError
-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.
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")