2014-03-03 25 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