Was bedeutet vor einem String-Literal ein “r”? [duplicate]
Lesezeit: 2 Minuten
Nikki Erwin Ramírez
Ich habe es zum ersten Mal beim Erstellen von regulären Ausdrücken über mehrere Zeilen als Methodenargument gesehen re.compile()also bin ich davon ausgegangen r steht für RegEx.
Also was macht r meinst du in diesem Fall? Warum brauchen wir es?
Beachten Sie, dass das Aufteilen von Zeichenfolgen über mehrere Zeilen innerhalb von Klammern nichts mit dem Zeichenpräfix zu tun hat – dies ist nur ein Beispiel für Pythons automatische Zeichenfolgenverkettung und funktioniert mit jedem Präfix oder keinem.
– Daniel Rosemann
24. Januar 11 um 9:10 Uhr
Der r bedeutet, dass der String als Rohstring behandelt werden soll, was bedeutet, dass alle Escape-Codes ignoriert werden.
Zum Beispiel:
'n' wird als Zeilenumbruchzeichen behandelt, während r'n' werden wie die Zeichen behandelt gefolgt von n.
Wenn ein 'r' oder 'R' Präfix vorhanden ist, wird ein auf einen umgekehrten Schrägstrich folgendes Zeichen unverändert in die Zeichenfolge eingefügt, und alle umgekehrten Schrägstriche werden in der Zeichenfolge belassen. Beispielsweise das Zeichenfolgenliteral r"n" besteht aus zwei Zeichen: einem Backslash und einem Kleinbuchstaben 'n'. String-Anführungszeichen können mit einem umgekehrten Schrägstrich maskiert werden, aber der umgekehrte Schrägstrich bleibt in der Zeichenfolge; zum Beispiel, r""" ist ein gültiges Zeichenfolgenliteral, das aus zwei Zeichen besteht: einem umgekehrten Schrägstrich und einem doppelten Anführungszeichen; r""
ist kein gültiges Zeichenfolgenliteral (selbst eine unformatierte Zeichenfolge kann nicht mit einer ungeraden Anzahl von umgekehrten Schrägstrichen enden). Insbesondere darf eine unformatierte Zeichenfolge nicht mit einem einzelnen umgekehrten Schrägstrich enden (da der umgekehrte Schrägstrich das folgende Anführungszeichen maskieren würde). Beachten Sie auch, dass ein einzelner umgekehrter Schrägstrich, gefolgt von einem Zeilenumbruch, als diese beiden Zeichen als Teil der Zeichenfolge und nicht als Zeilenfortsetzung interpretiert wird.
der Backslash “ darf nicht die letzte Charta sein oder sonst ein Fehler SyntaxError: EOL while scanning string literal tritt ein. Für Python3 ist es print (r"Testnew")
– Arthur
23. Mai 17 um 3:07 Uhr
String-Interpolation mit .format() funktioniert immer noch auf rohen Saiten. Formatierungsbeispiele
– Xander-Müller
27. Dezember 17 um 16:46 Uhr
Es bedeutet, dass Fluchten nicht übersetzt werden. Beispielsweise:
r'n'
ist eine Zeichenfolge mit einem Backslash gefolgt von dem Buchstaben n. (Ohne das r es wäre ein Zeilenumbruch.)
b steht für Byte-String und wird in Python 3 verwendet, wo Strings standardmäßig Unicode sind. In Python 2.x waren Strings standardmäßig Byte-Strings und Sie würden verwenden u um Unicode anzuzeigen.
Beachten Sie, dass das Aufteilen von Zeichenfolgen über mehrere Zeilen innerhalb von Klammern nichts mit dem Zeichenpräfix zu tun hat – dies ist nur ein Beispiel für Pythons automatische Zeichenfolgenverkettung und funktioniert mit jedem Präfix oder keinem.
– Daniel Rosemann
24. Januar 11 um 9:10 Uhr