簡體   English   中英

如何將字節列表(unicode)轉換為 Python 字符串?

[英]How to convert list of bytes (unicode) to Python string?

我有一個字節列表(8 位字節,或者在 C/C++ 語言中它們形成 wchar_t 類型字符串),它們形成一個 UNICODE 字符串(逐字節),如何將這些值轉換為 Python 字符串,嘗試了一些事情,但是沒有人可以將這 2 個字節連接成 1 個字符並從中構建一個完整的字符串。 謝謝你。

將字節序列轉換為Unicode字符串是通過在該str (在Python 2.x中)或bytes (Python 3.x)對象上調用decode()方法來完成的。

如果你實際上有一個字節列表,那么,為了獲得這個對象,你可以使用''.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

你也可以使用decode()將字節列表轉換為字符串列表

stringlist=[x.decode('utf-8') for x in bytelist]

以下是對我最有效的方法:

import codecs

print(type(data)) # <class 'bytes'>
data: str = codecs.decode(data, 'UTF-8')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM