我使用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")
但所有结果都是一样的:
\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728
我希望得到以下中文文本:
方法,删除存储在
答案 0 :(得分: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
:
a = u"\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728"
要将现有string
转换为unicode string
,您可以使用unicode
作为unicode_escape
参数调用encoding
:
print unicode(a, encoding='unicode_escape') # Prints 方法,删除存储在
我打赌你从string
回复得到了JSON
,所以第二种方法可能就是你需要的。
BTW,unicode_escape
编码是一种特定于Python的编码,用于
在Python源代码中生成一个适合作为Unicode文字的字符串 代码
答案 1 :(得分:0)
您从哪里获取此数据?也许您可以共享下载和提取它的方法。
无论如何,它看起来像是一些JSON编码字符串的残余?基于这个假设,这是一个非常hacky(并不是非常严重)的方法:
>>> 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)
方法,删除存储在
这涉及通过将a
中的给定字符串用双引号括起来然后将JSON字符串解码为Python unicode字符串来重新创建有效的JSON编码字符串。