2014-03-03 24 views
0

我想轉換字符串1所以它會給輸出作爲字符串2解碼轉義字符

string1 = "<value>UK LONDON 8CS Flr01 Rm1\\xc4\\x9f</value>" 

string2 = "<value>UK LONDON 8CS Flr01 Rm1ğ</value>" 

我使用的Plone對有限的選擇是什麼,讓我們假設我無法導入任何外部庫。

當我試圖用.decode( 'Unicode的逃逸'),它返回下列字符串

print string1.decode('unicode-escape') # prints <value>UK LONDON 8CS Flr01 Rm1Ä</value> 

注意,這需要一個通過轉換的unicode (\ XC4)

的第一部分

感謝

回答

0

使用string-escape編碼,而不是unicode-escape

>>> print string1.decode('string-escape') 
<value>UK LONDON 8CS Flr01 Rm1ğ</value> 
它使用

或使用解碼,然後使用latin1編碼其編碼:

>>> print string1.decode('unicode-escape').encode('latin1') 
<value>UK LONDON 8CS Flr01 Rm1ğ</value> 

string-escape是僅在Python 2.x中可用的

+0

在Python 3.x上怎麼樣,有什麼辦法可以轉換嗎? – user3322418

+0

@ user3322418,您需要先在Python 3.x中將字符串編碼爲字節:'import sys;您可以在Python 3.x中將字節對象傳遞給'print'函數。sys.stdout.buffer.write(string1.encode()。decode('unicode-escape')。encode('latin1'))' – falsetru

+0

@ user3322418, 。但它不會給你你想要的。這就是爲什麼我在前面的評論中使用了'sys.stdout.buffer.write'。 – falsetru