首页 > 解决方案 > 将字节数据列表转换为字符串

问题描述

请建议一种将字节列表转换为字符串列表或任何方法的方法,以便我可以将 resp 数据读取为字符串,我尝试使用 decode 但它不支持以下错误 -

类“列表”的未解析属性引用“解码”

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']

标签: pythonpython-3.xlistpython-2.7

解决方案


解码它:

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

推荐阅读