Titel: Drop-Unterstützung für das "ur" -String-Präfix
Wenn PEP 414 die Unterstützung für explizite Unicode-Literale in Python 3 wiederherstellte, wurde das Zeichen "ur" als Synonym für das Präfix "r" betrachtet.
Benutze also 'r' anstelle von 'ur'
Tatsächlich unterstützt Python 3.4 nur u'...'
(um Code zu unterstützen, der sowohl auf Python 2 als auch auf 3 laufen muss) und r'....'
, aber nicht beides. Das liegt daran, dass die Semantik der Funktionsweise von ur'..'
in Python 2 anders ist als die von ur'..'
in Python 3 (in Python 2 werden% codes% und \uhhhh
escapes noch verarbeitet, in Python 3 a 'r'). .. 'String würde nicht).
Beachten Sie, dass es in diesem spezifischen Fall keinen Unterschied zwischen dem rohen String-Literal und dem regulären String gibt! Sie können einfach verwenden:
%Vor%und es wird in Python 2 und 3 funktionieren.
In Fällen, in denen ein roher String-Literal von Bedeutung ist, könnten Sie die rohe Zeichenfolge von \Uhhhhhhhh
in Python 2 dekodieren und die raw_unicode_escape
in Python 3 abfangen:
Wenn Sie Python 3-Code schreiben only (damit er nicht mehr auf Python 2 ausgeführt werden muss), löschen Sie einfach den AttributeError
ganz:
Diese Tabelle vergleicht (einige von) die verschiedenen String-Literal-Präfixe in Python 2 (.7) und 3 (.4+):
Wie Sie sehen, gibt es in Python 3 keine Möglichkeit, ein Literal zu haben, das keine Escapes verarbeitet, sondern Unicode-Literale verarbeitet. Um eine solche Zeichenfolge mit Code zu erhalten, der sowohl in Python 2 als auch in 3 funktioniert, verwenden Sie:
%Vor%Eigentlich ist Ihr Beispiel nicht sehr gut, da es keine Unicode-Literale oder Escape-Sequenzen hat. Ein besseres Beispiel wäre:
%Vor%In Python 2:
%Vor%In Python 3:
%Vor%Was ist wirklich das Gleiche?
Tags und Links python python-3.x