如何将字节列表(unicode)转换为Python字符串?

时间:2014-05-11 21:46:49

标签: python string unicode

我有一个字节列表(8位字节,或者用C / C ++语言形成wchar_t类型字符串),它们形成一个UNICODE字符串(逐字节),如何将这些值转换为Python字符串,尝试过很少的东西,但没有人可以将这2个字节加入1个字符并从中构建一个完整的字符串。谢谢。

2 个答案:

答案 0 :(得分:11)

通过在decode()(在Python 2.x中)或str(Python 3.x)对象上调用bytes方法,将字节序列转换为Unicode字符串。

如果您确实有一个字节列表,那么,要获取此对象,您可以使用''.join(bytelist)b''.join(bytelist)

您需要指定用于对原始Unicode字符串进行编码的编码。

但是,术语“Python字符串”有点模棱两可,也与版本有关。 Python str类型代表Python 2.x中的字节字符串和Python 3.x中的Unicode字符串。因此,在Python 2中,只需执行''.join(bytelist)即可获得str个对象。

Python 2的演示:

In [1]: 'тест'
Out[1]: '\xd1\x82\xd0\xb5\xd1\x81\xd1\x82'

In [2]: bytelist = ['\xd1', '\x82', '\xd0', '\xb5', '\xd1', '\x81', '\xd1', '\x82']

In [3]: ''.join(bytelist).decode('utf-8')
Out[3]: u'\u0442\u0435\u0441\u0442'

In [4]: print ''.join(bytelist).decode('utf-8') # encodes to the terminal encoding
тест

In [5]: ''.join(bytelist) == 'тест'
Out[5]: True

答案 1 :(得分:1)

您还可以使用decode()

将字节列表转换为字符串列表
stringlist=[x.decode('utf-8') for x in bytelist]