测试unicode转义字符串



我有一个像这样的数组

data = [   
    {   'string': u'CN=Willian John swayxc3xa9rioGraxc3xa7a/emailAddress=will.graca@mail.acme.pt'},
    {   'string': u'CN=E0999999.www.acme.com'}
]

有些字符串包含unicode转义字符串,有些不包含。我需要遍历数组并对unicode转义字符串进行反转义。

I tried doing this:

for i in data:
    print unicode(i['string'], 'unicode-escape')

但是,对于未转义的字符串,这总是抛出异常。

是否有一种简单的方法来测试这作为迭代的一部分?

你得到的是一个双编码字符串。它已经被解码一次以创建Unicode,但您需要再解码一次。

要做到这一点,我们利用了Unicode从latin-1字符集中获取前256个码位这一事实。这使我们可以将Unicode字符串转换回字节字符串,然后可以从UTF-8解码。
print i['string'].encode('latin-1').decode('utf-8')

如果这在没有decode的情况下对您有效,那是因为您的控制台已经直接理解UTF-8字节字符串。如果你想给一个新的Unicode字符串赋值而不是打印它,你需要decode .

很难从您的问题中确定,但我猜您想将具有非ASCII字符的Unicode字符串转换为在每个无法用ASCII表示的字符之前使用反斜杠的转义版本。为此,您需要:

for item in data:
   print item["string"].encode("unicode-escape")

最新更新