如何使用Python将unicode字符串转换为实际字符串

2024-09-27 01:20:05 发布

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

我使用Python通过urllib2获取一些信息,但是信息是unicode字符串。在

我试过以下方法:

a = "\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728"
print unicode(a).encode("gb2312")

a = "\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728"
print a.encode("utf-8").decode("utf-8")

a = "\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728"
print u""+a

a = "\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728"
print str(a).decode("utf-8")

a = "\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728"
print str(a).encode("utf-8")

a = "\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728"
print a.decode("utf-8").encode("gb2312")

但所有结果都是一样的:

^{pr2}$

我想得到以下中文文本:

方法,删除存储在

Tags: 方法信息unicodeutfencodeprintdecodeu6cd5
2条回答

您需要将string转换为unicode string。在

首先,a中的反斜杠是自动转义的:

a = "\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728"

print a # Prints \u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728

a       # Prints '\\u65b9\\u6cd5\\uff0c\\u5220\\u9664\\u5b58\\u50a8\\u5728'

因此,处理这个转义字符串的编码/解码没有任何区别。在

您可以使用unicode literal或将字符串转换为unicode string。在

要使用unicode literal,只需在字符串前面添加一个u

^{pr2}$

要将现有的string转换为unicode string,可以调用unicode,其中{}作为encoding参数:

print unicode(a, encoding='unicode_escape') # Prints 方法,删除存储在

我敢打赌您将从JSON响应中得到string,因此第二种方法很可能就是您需要的。在

顺便说一句,unicode_escape编码是Python特有的编码,用于

Produce a string that is suitable as Unicode literal in Python source code

你从哪里得到这些数据?也许你可以分享你下载和提取它的方法。在

不管怎样,它看起来有点像JSON编码字符串的残余?基于这一假设,这里有一个非常老套(并非完全严肃)的方法:

>>> a = "\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728"
>>> a
'\\u65b9\\u6cd5\\uff0c\\u5220\\u9664\\u5b58\\u50a8\\u5728'
>>> s = '"{}"'.format(a)
>>> s
'"\\u65b9\\u6cd5\\uff0c\\u5220\\u9664\\u5b58\\u50a8\\u5728"'
>>> import json
>>> json.loads(s)
u'\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728'
>>> print json.loads(s)
方法,删除存储在

这涉及到重新创建一个有效的JSON编码字符串,方法是用双引号将给定的字符串包装在a中,然后将JSON字符串解码为Python unicode字符串。在

相关问题 更多 >

    热门问题