Python:如何将带\unnn转义的字符串转换为Unicode字符串?

2024-06-26 00:26:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python,不幸的是,我的代码需要将字符串中表示Unicode字符的字符串转换为原始字符串,如\u1234转义:

以下是我从其他代码中获得的代码字符串:

\u6b22\u8fce\u63d0\u4ea4\u5fae\u535a\u641c\u7d22\u4f7f\u7528\u53cd\u9988\uff0c\u8bf7\u76f4\u63a5

我需要将其转换回原始字符串。怎么做


Tags: 字符串代码unicode字符u5faeu4ea4u7528u63d0
3条回答

我想这就是你想要的。它不是UTF-8字节字符串(技术上是,但只是因为ASCII是UTF-8的子集)

>>> s='\u6b22\u8fce\u63d0\u4ea4\u5fae\u535a\u641c\u7d22\u4f7f\u7528\u53cd\u9988\uff0c\u8bf7\u76f4\u63a5'
>>> print s.decode('unicode-escape')
欢迎提交微博搜索使用反馈,请直接

仅供参考,这是UTF-8:

>>> s.decode('unicode-escape').encode('utf8')

“\xe6\xac\xa2\xe8\xbf\x8e\xe6\x8f\x90\xe4\xba\xa4\xe5\xbe\xae\xe5\x8d\x9a\xe6\x90\x9c\xe7\xb4\xa2\xe4\xbd\xbf\xe7\x94\xa8\xe5\x8f\x8d\xe9\xa6\x88\xef\xbc\xbc\xbc\xe8\xaf\xb7\xe7\xb4\xe5”

马克·朝圣者在他的书中解释了这一点。看一看

http://www.diveintopython.net/xml_processing/unicode.html

>>> s = u"\u6b22\u8fce\u63d0\u4ea4\u5fae\u535a\u641c\u7d22\u4f7f\u7528\u53cd\u9988\uff0c\u8bf7\u76f4\u63a5"

>>> print s.encode("utf-8")

>>> 欢迎提交微博搜索使用反馈,请直接

如果我理解这个问题,我们有一个简单的字节字符串,里面有Unicode转义,或者类似的东西:

a = '\u6b22\u8fce\u63d0\u4ea4\u5fae\u535a\u641c\u7d22\u4f7f\u7528\u53cd\u9988\uff0c\u8bf7\u76f4\u63a5'

In [122]: a
Out[122]: '\\u6b22\\u8fce\\u63d0\\u4ea4\\u5fae\\u535a\\u641c\\u7d22\\u4f7f\\u7528\\u53cd\\u9988\\uff0c\\u8bf7\\u76f4\\u63a5'

因此,我们需要使用unicode代码点手动解析字符串中的unicode值:

\u6b22 => unichr(0x6b22) # 欢

或者最后:

print "".join([unichr(int('0x'+a[i+2:i+6], 16)) for i in range(0, len(a), 6)])
欢迎提交微博搜索使用反馈,请直接

相关问题 更多 >