我正在把一些代码从python2转换成python3。在
在python2中,我可以做以下事情:
>>> c = '\xe5\xb8\x90\xe6\x88\xb7'
>>> print c
帐户
>>> c.decode('utf8')
u'\u5e10\u6237'
如何在python3中获得相同的输出(u'\u5e10\u6237')?在
编辑
对于其他有此问题的人,我在查看了这些响应后意识到,要利用结果,每个字符都需要作为一个单独的元素来处理。转义的unicode表示形式(如“\u5e10\u6237”)是一个字符串,因此它不会自然地分成与原始汉字相对应的部分。在
^{pr2}$除非您想在程序的下一部分中再次解析它,否则必须将输入字符串中的每个字符分开,并将其单独转换为数组。因此,我的解决方案是:
>>> [l.encode('unicode-escape').decode('ascii') for l in c]
['\\u5e10', '\\u6237']
另一种解决方案是将每个字符变成十六进制表示:
>>> [hex(ord(l)) for l in c]
['0x5e10', '0x6237']
谢谢你的帮助。在
返回与python2中相同的unicode是不可能的:我没有看到像python2和python3中那样的unicode对象。但是可以获得unicode对象的值。在
为此,您需要做几件事:
-创建值为'\xe5\xb8\x90\xe6\x88\xb7'的字节元素 -将此字节元素转换为字符串 -从字符串获取unicode代码
第一步很容易。要创建一个与c值相同的字节元素“c”,只需执行以下操作:
然后,读取元素
^{pr2}$最后,我创建了一个函数来将字符串转换为其字符+unicode表示
get_unicode_code(d)
将返回与d.encode('unicode-escape').decode('ascii')
相同的结果,尽管它很可能效率较低。在它以一个字符串作为参数,并返回一个带有unicode的字符串,而不是它所表示的字符。在
这称为“unicode转义”编码。下面是一个在python3中实现这种行为的示例:
如果您希望它是},那么您可以简单地去掉{}。在
bytes
,而不是{相关问题 更多 >
编程相关推荐