Rohe Zeichenfolgenliterale in Python
Ein „rohes“ (wörtliches) Zeichenfolgenliteral beginnt mit einem »r«. Zeichenfolgen, die normalerweise eine besondere Bedeutung haben, werden darin wörtlich genommen. Daher steht in einem wörtlichen Zeichenfolgenliteral »\n« für die Folge der beiden Zeichen inverser Schrägstrich »\« und »n«.
- Konsolenprotokoll
print( "a\nb\n\nc" )
a
b
c- Konsolenprotokoll
print( len( "a\nb" ))
3
- Konsolenprotokoll
print( r"a\nb" )
a\nb
- Konsolenprotokoll
print( len( r"a\nb" ))
4
Jedoch darf in einem solchen Zeichenfolgenliteral vor dem schließenden Anführungszeichen kein inverser Schrägstrich stehen.
- Konsolenprotokoll
print( r"a\nb\" )
SyntaxError: EOL while scanning string literal
- Ein weiteres Beispiel
print( r"C:\example" + "\\" )
C:\example\
- Ein weiteres Beispiel
print( r"'[Ljava.lang.Object; does not exist\nat com.example'" )
'[Ljava.lang.Object; does not exist\nat com.example'
Syntax ⃗
- morphologisches Diagramm (vereinfacht)
praefigiertes Zeichenfolgenliteral
.-------------------------------.
| .----------------------. v .----------------------.
|-|---'--->| Zeichenfolgenpraefix |---'--->| Zeichenfolgenliteral |--->|-|
'----------------------' '----------------------'Zeichenfolgenpraefix
.-.
|-|---( r )--->|-|
'-'Zeichenfolgenliteral
.-. .-.
|-|---.--->( ' )---.------------------------------.--->( ' )---.--->|-|
| '-' ^ | '-' ^
| | .---------------------. | |
| '---| ein Zeichen außer ' |<---' |
| '---------------------' |
| .-. .-. |
'--->( " )---.------------------------------.--->( " )---'
'-' ^ | '-'
| .---------------------. |
'---| ein Zeichen außer " |<---'
'---------------------'
Die Zeichenfolge eines rohen Zeichenfolgenliterals darf nicht mit einem inversen Schrägstrich enden!
Semantik ⃗
In rohen Zeichenfolgenliteralen werden Folgen aus einem inversen Schrägstrich und einem Buchstaben wörtlich in die Zeichenfolge übernommen und haben keine besondere Bedeutung.
Details ⃗
Wir gehen in diesem Kurs zunächst nicht auf alle möglichen Details in Zusammenhang mit normalen Zeichenfolgenliteralen und rohen Zeichenfolgenliteralen ein. Daher gibt es einige Besonderheiten im Falle spezieller Zeichen oder Zeichenkombinationen, die hier noch nicht behandelt wurden, aber anfangs auch relativ selten benötigt werden. Weitere Informationen dazu findet man beispielsweise im einschlägigen Abschnitt “String and Bytes literals ” der The Python Language Reference, Release 3.7.0a1.