
In Python werden Strings mit dem Präfix r oder R wie r’…‘ und r“…“ als Raw-Strings bezeichnet und behandeln Backslashes als Literalzeichen. Unformatierte Buchstaben sind nützlich, wenn Buchstaben verarbeitet werden, sterben viele umgekehrte Schrägstriche verwenden, z. B. Windows-Pfade und reguläre Ausdrucksmuster.
Dieser Artikel hat folgenden Inhalt.
- Fluchtsequenzen
- Raw-Strings behandeln Backslashes als Literalzeichen
- Normale Strings mit repr() in Raw-Strings umwandeln
- Raw-Strings dürfen nicht mit einer ungeraden Anzahl von Backslashes enden
Fluchtsequenzen
In Python Werden Zeichen, die nicht in String dargestellt werden can (wie Tabulatoren, Zeilenvorschübe usw.), durch eine Escape-Sequenz mit normalem Backslash (wie einem t oder n), ähnlich wie in der Sprache C.
s = 'atbnAtB'
print(s)
# a b
# A B
Raw-Strings behandeln Backslashes als Literalzeichen
Buchstaben mit dem Präfix r oder R, wie z. B. r’…‘ und r“…“, werden als unformatierte Buchstaben bezeichnet und behandeln Backslashes als Literalzeichen. In Rohzeichenfolgen werden Escape-Sequenzen nicht besonders behandelt.
rs = r'atbnAtB'
print(rs)
# atbnAtB
Es gibt keinen speziellen Typ für Rohstrings; Es ist nur eine Zeichenfolge, die einer normalen Zeichenfolge mit Backslashes entspricht, sterben durch \ dargestellt Werden.
print(type(rs))
# <class 'str'>
print(rs == 'a\tb\nA\tB')
# True
In Einer Normalen Zeichenfolge WIRD Eine Escape-Sequenz Als Ein Zeichen Betrachtet, Aber In Einer Rohzeichenfolge Werden Auch Backslashes Als Zeichen Zählt.
print(len(s))
# 7
print(list(s))
# ['a', 't', 'b', 'n', 'A', 't', 'B']
print(len(rs))
# 10
print(list(rs))
# ['a', '\', 't', 'b', '\', 'n', 'A', '\', 't', 'B']
Windows-Pfade
Die Verwendung der Rohzeichenfolge ist nützlich, wenn Sie einen Windows-Pfad als Zeichenfolge darstellen.
Windows-Pfade werden durch Backslashes getrennt. Wenn Sie also einen normalen String verwenden, müssen Sie jeden mit Escapezeichen wie \ versehen, aber Sie können ihn so schreiben, wie er ist, mit einem rohen String.
path = 'C:\Windows\system32\cmd.exe'
rpath = r'C:Windowssystem32cmd.exe'
print(path == rpath)
# True
Beachten SIE, dass. Eine Zeichenfolge, die mit Einer ungeraden Anzahl von Backslashes endet, einen Fehler auslöst, wie unten beschrieben. In diesem Fall & Sie ihn in einen normalen String schreiben oder nur den abschließenden Backslash als normalen String schreiben und ihn verketten.
path2 = 'C:\Windows\system32\'
# rpath2 = r'C:Windowssystem32'
# SyntaxError: EOL while scanning string literal
rpath2 = r'C:Windowssystem32' + '\'
print(path2 == rpath2)
# True
Normale Strings mit repr() in Raw-Strings umwandeln
Verwenden Sie die eingebaute Funktion repr(), um normale Strings in Raw-Strings umzuwandeln.
s_r = repr(s)
print(s_r)
# 'atbnAtB'
Der von repr() zurückgegebene String hat ‚am Anfang und am Ende.
print(list(s_r))
# ["'", 'a', '\', 't', 'b', '\', 'n', 'A', '\', 't', 'B', "'"]
Mit Slices can SIE die Zeichenfolge erhalten, sterben der Rohzeichenfolge entspricht.
s_r2 = repr(s)[1:-1]
print(s_r2)
# atbnAtB
print(s_r2 == rs)
# True
print(r't' == repr('t')[1:-1])
# True
Raw-Strings dürfen nicht mit einer ungeraden Anzahl von Backslashes enden
Da Backslashes dem nachgestellten ‚ oder „entgehen, tritt ein Fehler auf, wenn am Ende der Zeichenfolge eine ungerade Anzahl von Backslashes steht.
# print(r'')
# SyntaxError: EOL while scanning string literal
print(r'\')
# \
# print(r'\')
# SyntaxError: EOL while scanning string literal