2016-06-01 7 views
1

Von documentation:Unterschied zwischen u "string" und ur "string" in Python

Die Lösung ist Pythons raw String-Notation für reguläre Expressionsmuster zu verwenden; Backslashes werden in einem String-Literal mit dem Präfix 'r' nicht behandelt. So ist r "\ n" eine zweistellige Zeichenkette , die '\' und 'n' enthält, während "\ n" eine Ein-Zeichen-Zeichenkette ist, die eine neue Zeile enthält. Normalerweise werden Muster in Python Code mit dieser Raw-String-Notation ausgedrückt.

Typen stimmen auch überein; type(u"text") == type(ur"text"), und dasselbe gilt, wenn Sie u entfernen. Deshalb muss ich fragen: Was ist der Unterschied zwischen diesen beiden? Wenn es keinen Unterschied gibt, warum verwenden Sie überhaupt r?

+0

Verwenden Sie Python 2? –

Antwort

3

Zum Beispiel:

>>> len(ur"tex\t") 
5 
>>> len(u"tex\t") 
4 

Ohne r, die \t ist ein Charakter (die Registerkarte), so dass die Zeichenfolge hat die Länge 4.

Verwenden r wenn Sie einen regulären Ausdruck bauen möchten, dass beinhaltet \. In einem String, der nicht r ist, müssten Sie diesen entkommen, was nicht lustig ist.

>>> len(u"\\") 
1 
>>> len(ur"\\") 
2 
+0

Um hinzuzufügen: 'r' ändert, wie der Python-Parser die Zeichenkette interpretiert, d. H. Die Behandlung von Escape-Sequenzen. Es ergibt sich kein anderer Typ als bei 'u' oder 'b'. – fmarc

Verwandte Themen