繁体   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