簡體   English   中英

將字節數據列表轉換為字符串

[英]Converting a list of bytes data to string

請建議一種將字節列表轉換為字符串列表或任何方法的方法,以便我可以將 resp 數據作為字符串讀取,我嘗試使用 decode 但以下錯誤不支持它 -

class“列表”的未解析屬性參考“解碼”

resp = [b'\r\x1b[2K\x1b[39m[00479650ms][INFO][MBED_DC]: dc_func:230 Waiting \r\n',
    b'\x1b[0m\r\n', b'AT+BOOTARG=TRACE=ON\r\r\n']

解碼它:

resp = [b'\r\x1b[2K\x1b[39m[00479650ms][INFO][MBED_DC]: dc_func:230 Waiting \r\n',
    b'\x1b[0m\r\n', b'AT+BOOTARG=TRACE=ON\r\r\n']
decode_list = []
for item in resp:
    decode_list.append(item.decode("utf-8"))

時間比較:

exp1 = """
resp = [b'item1',b'item2']
new_list = []
for item in resp:
    new_list.append(item.decode("utf-8"))
"""

exp2 = """
resp = [b'item1',b'item2']
new_list = [item.decode("utf-8") for item in resp]
"""

exp3 = """
resp = [b'item1',b'item2']
resp_dec = list(map(lambda x: x.decode("utf-8"), resp))
"""

timeit(exp1, number=1000)
timeit(exp2, number=1000)
timeit(exp3, number=1000)

exp3 雖然速度較慢,但似乎更“優雅”。

輸出:

   exp1 --> 0.0002586000000000116
   exp2 --> 0.00029969999999999997
   exp3 --> 0.0004574999999999996

使用 map 解碼列表中的每個項目,然后將 map 全部解碼到一個新列表中:

resp_decoded = list(map(lambda i: i.decode('utf8'), resp))

暫無
暫無

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

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