2.4. Strings¶
Ein String ist eine Folge von Unicode-Zeichen, die zwischen Anführungszeichen geschrieben wird. Einfache und doppelte Anführungszeichen sind gleichwertig – wählen Sie den Stil, mit dem Sie das Maskieren der im Text vorkommenden Anführungszeichen vermeiden:
name = "OpenMV Cam"
company = 'OpenMV, LLC'
message = "She said \"hi\"" # both styles can be used
same = 'She said "hi"'
Dreifach in Anführungszeichen gesetzte Strings ("""...""" oder '''...''') erstrecken sich über mehrere Zeilen und bewahren die Zeilenumbrüche wörtlich:
banner = """boot ok
firmware v1.28
"""
print(banner)
Ausgabe:
boot ok
firmware v1.28
2.4.1. Escape-Sequenzen¶
Innerhalb eines normalen Strings leitet \ ein Sonderzeichen ein:
\n– Zeilenumbruch\t– Tabulator\\– ein wörtlicher Backslash\'/\"– ein wörtliches Anführungszeichen (wenn es sonst den String beenden würde)\xHH– das Zeichen mit dem Hex-CodeHH\uHHHH– der Unicode-CodepunktHHHH
Wenn ein String viele Backslashes enthält, setzen Sie dem Literal ein r voran, um daraus einen rohen (raw) String zu machen. Backslashes werden dann wörtlich genommen – \n bleibt zwei Zeichen lang, statt durch einen Zeilenumbruch ersetzt zu werden:
win_path = r"C:\Users\OpenMV\camera.py"
literal = r"\n is two characters, not a newline"
2.4.2. Verkettung und Wiederholung¶
Zwei Strings werden mit + zusammengefügt; ein String wird mit * wiederholt:
greeting = "Hello, " + name + "!"
line = "-" * 40 # 40-character separator
Wiederholtes + in einer Schleife alloziert bei jeder Iteration einen neuen String. Um größere Strings aus vielen Teilen aufzubauen, verwenden Sie str.join().
2.4.3. Länge, Indizierung und Slicing¶
len() gibt die Anzahl der Zeichen in einem String zurück. Die Indizierung mit [] gibt einen einzeichigen String an der angegebenen Position zurück; negative Indizes zählen vom Ende her:
>>> s = "OpenMV"
>>> len(s)
6
>>> s[0]
'O'
>>> s[-1]
'V'
Ein Slice s[start:stop] gibt den Teilstring von Position start bis ausschließlich stop zurück. Jedes Ende kann weggelassen werden, um „den Anfang“ oder „das Ende“ zu bedeuten, und ein optionaler dritter Wert s[start:stop:step] lässt Sie Zeichen überspringen.
Slice-Positionen liegen zwischen den Zeichen. s[2:5] wählt die Zeichen an den Positionen 2, 3 und 4 aus.¶
>>> s = "OpenMV"
>>> s[2:5]
'enM'
>>> s[:3]
'Ope'
>>> s[3:]
'nMV'
>>> s[::-1]
'VMnepO' # whole string, reversed
Ein Slice außerhalb des gültigen Bereichs gibt stillschweigend den vorhandenen Teil zurück – s[100:200] ist der leere String "", kein Fehler. Eine Indizierung außerhalb des Bereichs hingegen löst einen IndexError aus.
2.4.4. Unveränderlichkeit¶
Strings können nicht an Ort und Stelle verändert werden. Operationen, die so aussehen, als würden sie einen String verändern, geben in Wirklichkeit einen neuen String zurück und lassen das Original unangetastet:
>>> name = "OpenMV"
>>> name.upper()
'OPENMV'
>>> name
'OpenMV' # unchanged
Um einen String zu „ändern“, binden Sie den Namen an den neuen Wert: name = name.upper().