2016-08-26 4 views
0

Ich habe einige Unicode mit Prozentzeichen Ich möchte zu Backslashes ändern. Ich weiß, dass Sie einen zusätzlichen umgekehrten Schrägstrich als Escape-Sequenz müssen, aber wenn ich tat dies replace() gab mir zwei Schrägstriche:Python: Ersetzen Sie Schrägstriche

>>> s ="%20%u200F%u05D1%u05E8%u05DB%u05EA%u200F%20%u200F%u05D4%u05E8%u05D9%u05D7%u200F%20%u200F%u05D5%u05D1%u05E8%u05DB%u05EA%u200F%20%u200F%u05D4%u05D5%u05D3%u05D0%u05D4" 
>>> s.replace("%","\") 
File "<stdin>", line 1 
s.replace("%","\")     
SyntaxError: EOL while scanning string literal 

>>> s.replace("%","\\") 
'\\20\\u200F\\u05D1\\u05E8\\u05DB\\u05EA\\u200F\\20\\u200F\\u05D4\\u05E8\\u05D9\\u05D7\\u200F\\20\\u200F\\u05D5\\u05D1\\u05E8\\u05DB\\u05EA\\u200F\\20\\u200F\\u05D4\\u05D5\\u05D3\\u05D0\\u05D4' 

Die 'r' Qualifyer auch nicht funktioniert. Irgendwelche Ideen?

+0

Verwenden Sie Python 2 oder 3? – boardrider

Antwort

3

Das ist nur Python Aufruf der Zeichenfolge __repr__, weil Sie in der REPL sind und die __repr__ Escapezeichen \ Zeichen gibt Ihnen die Ausgabe, die Sie sehen.

Mit print, die die Saiten __str__ verwenden, finden Sie die richtige Ausgabe:

print(s.replace("%","\\"))  
\20\u200F\u05D1\u05E8\u05DB\u05EA\u200F\20\u200F\u05D4\u05E8\u05D9\u05D7\u200F\20\u200F\u05D5\u05D1\u05E8\u05DB\u05EA\u200F\20\u200F\u05D4\u05D5\u05D3\u05D0\u05D4 

Das heißt, geschieht der Austausch nur in Ordnung.

0

Genau wie Sie zwei umgekehrte Schrägstriche eingeben müssen, um eine einzugeben, zeigt Python bei der Anzeige einer Zeichenfolge in Anführungszeichen zwei an, um anzuzeigen, dass es sich um einen umgekehrten Schrägstrich handelt. '\\x41' ist vier Zeichen, '\x41' ist eins (entspricht 'A'). Es ist eine Debugging-Funktion, so dass Sie beispielsweise nicht druckbare Zeichen sehen und den Unterschied erkennen können.

>>> a = '\xa0\\xa0' 
>>> a 
'\xa0\\xa0' 
>>> print(a) 
 \xa0 
Verwandte Themen