测试 unicode 转义字符串
Testing for unicode escaped strings
我有一个看起来像这样的数组
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')
但是,对于非转义字符串,这总是会引发异常。
作为迭代的一部分,是否有一种简单的方法来对此进行测试?
很难从你的问题中确定,但我猜你想将带有非 ASCII 字符的 Unicode 字符串转换为转义版本,该转义版本在每个不能用 ASCII 表示的字符前使用反斜杠.为此,您需要:
for item in data:
print item["string"].encode("unicode-escape")
你得到的是一个双重编码的字符串。已经解码过一次生成Unicode,还需要再解码一次。
为此,我们利用了 Unicode 从 latin-1 字符集中获取其前 256 个代码点这一事实。这让我们可以将 Unicode 字符串转换回字节字符串,然后我们可以从 UTF-8 解码它。
print i['string'].encode('latin-1').decode('utf-8')
如果没有 decode
这对您有效,那是因为您的控制台已经可以直接理解 UTF-8 字节字符串。如果你想分配给一个新的 Unicode 字符串而不是打印它,你需要 decode
.
我有一个看起来像这样的数组
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')
但是,对于非转义字符串,这总是会引发异常。
作为迭代的一部分,是否有一种简单的方法来对此进行测试?
很难从你的问题中确定,但我猜你想将带有非 ASCII 字符的 Unicode 字符串转换为转义版本,该转义版本在每个不能用 ASCII 表示的字符前使用反斜杠.为此,您需要:
for item in data:
print item["string"].encode("unicode-escape")
你得到的是一个双重编码的字符串。已经解码过一次生成Unicode,还需要再解码一次。
为此,我们利用了 Unicode 从 latin-1 字符集中获取其前 256 个代码点这一事实。这让我们可以将 Unicode 字符串转换回字节字符串,然后我们可以从 UTF-8 解码它。
print i['string'].encode('latin-1').decode('utf-8')
如果没有 decode
这对您有效,那是因为您的控制台已经可以直接理解 UTF-8 字节字符串。如果你想分配给一个新的 Unicode 字符串而不是打印它,你需要 decode
.