Es gibt nicht wirklich eine "rohe Saite "; Es gibt rohe String-Literale , die genau die String-Literale sind, die 'r'
vor dem Eröffnungszitat mit einem gekennzeichnet sind .
Ein "rohes String-Literal" ist eine etwas andere Syntax für ein String-Literal, bei dem ein Backslash \
als "nur ein Backslash" verstanden wird (außer wenn es direkt vor einem Anführungszeichen steht, das das Literal sonst beenden würde) - nein "Escape-Sequenzen" zur Darstellung von Zeilenumbrüchen, Tabulatoren, Backspaces, Formular-Feeds usw. In normalen String-Literalen muss jeder Backslash verdoppelt werden, um nicht als Beginn einer Escape-Sequenz verwendet zu werden.
Diese Syntaxvariante existiert hauptsächlich, weil die Syntax von Mustern mit regulären Ausdrücken stark mit Backslashes ist (aber nie am Ende, daher spielt die obige "Ausnahme" -Klausel keine Rolle) und sie sieht ein bisschen besser aus, wenn Sie vermeiden, jedes von ihnen zu verdoppeln - - das ist alles. Es hat auch an Popularität gewonnen, native Windows-Dateipfade auszudrücken (mit Backslashes anstelle von regulären Schrägstrichen wie auf anderen Plattformen), aber das wird sehr selten benötigt (da normale Schrägstriche auch unter Windows meistens gut funktionieren) und unvollständig (aufgrund der "Except" -Klausel über).
r'...'
ein Byte - String ist (in Python 2 *), ur'...'
auch produziert genau die gleichen Typen von Zeichenkette (so zum Beispiel ist eine Unicode - Zeichenfolge (auch hier in Python 2 *), und jede der anderen drei Arten von zitieren r'...'
, r'''...'''
, r"..."
, r"""..."""
sind alle Byte-Strings und so weiter).
Nicht sicher , was Sie unter „going back “ - es gibt keine eigen zurück und Vorwärtsrichtung, weil es keinen roher String - Typen , es ist nur eine alternative Syntax ganz normale String - Objekte, Byte oder Unicode auszudrücken , wie sie auch sein mag.
Und ja, in Python 2. * unterscheidet u'...'
sich natürlich immer von nur '...'
- ersteres ist eine Unicode-Zeichenfolge, letzteres ist eine Byte-Zeichenfolge. In welcher Codierung das Literal ausgedrückt werden könnte, ist ein völlig orthogonales Problem.
Betrachten Sie beispielsweise (Python 2.6):
>>> sys.getsizeof('ciao')
28
>>> sys.getsizeof(u'ciao')
34
Das Unicode-Objekt benötigt natürlich mehr Speicherplatz (sehr kleiner Unterschied für eine sehr kurze Zeichenfolge natürlich ;-).