我有一个看起来像这样的数组
data = [
{ 'string': u'CN=Willian John sway\xc3\xa9rioGra\xc3\xa7a/emailAddress=will.graca@mail.acme.pt'},
{ 'string': u'CN=E0999999.www.acme.com'}
]
某些字符串包含unicode转义字符串,而某些字符串则不包含。我需要迭代数组并转换unicode转义字符串。
我试过这样做:
for i in data:
print unicode(i['string'], 'unicode-escape')
但是,这总是会引发非转义字符串的异常。
作为迭代的一部分,是否有一种简单的方法来测试它?
答案 0 :(得分:1)
你拥有的是双重编码的字符串。它已被解码一次以创建Unicode,但您需要再次解码它。
为此,我们利用Unicode从latin-1字符集中获取其前256个代码点的事实。这让我们将Unicode字符串转换回字节字符串,然后我们可以从UTF-8中解码。
print i['string'].encode('latin-1').decode('utf-8')
如果这对你没有decode
有用,那是因为你的控制台已经直接理解了UTF-8字节字符串。如果要分配新的Unicode字符串而不是打印它,则需要decode
。
答案 1 :(得分:0)
很难确定你的问题,但我猜你想要将带有非ASCII字符的Unicode字符串转换为在每个无法用ASCII表示的字符之前使用反斜杠的转义版本。为此,你想要:
for item in data:
print item["string"].encode("unicode-escape")