我知道这有效:
a = u"\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728"
print(a) # 方法,删除存储在
但是,如果我有一个来自JSON文件的字符串,它不以" u"(a = "\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728"
)开头,我知道如何在Python 2中创建它(print unicode(a, encoding='unicode_escape') # Prints 方法,删除存储在
) 。但是如何用Python 3做呢?
同样,如果它是从文件加载的字节字符串,如何转换它?
print("好的".encode("utf-8")) # b'\xe5\xa5\xbd\xe7\x9a\x84'
# how to convert this?
b = '\xe5\xa5\xbd\xe7\x9a\x84' # 好的
答案 0 :(得分:3)
如果我理解正确,该文件包含文字文本\u65b9\u6cd5\uff0c\u5220\u9664\u5b58\u50a8\u5728
(所以它是纯ASCII,但是使用反斜杠和所有描述Unicode序列的方法与在Python str
文字中的方式相同) 。如果是这样,有两种方法可以解决这个问题:
mystr = mybytes.decode('unicode-escape')
以从bytes
转换为str
解释转义codecs
模块进行“text - > text”转换(字节到字节,文本到文本编解码器现在仅由codecs
模块支持函数; bytes.decode
纯粹用于字节到文本,而str.encode
纯粹用于文本到字节,因为通常在Py2中,str.encode
和unicode.decode
是一个错误,并删除危险的方法可以更容易地理解转换的方向,例如decodedstr = codecs.decode(encodedstr, 'unicode-escape')