在python 3中,如何将字节对象中的各个字节放入列表中而又不将其转换为整数?

问题描述 投票:2回答:1

在python 3中,我有一个bytes对象,其长度大于1。我想将各个字节放入list中,这是一个示例:

myBytes = b'abc123'  # should turn into [b'a', b'b', b'c', b'1', b'2', b'3']

我尝试了以下操作:

badList0 = []
badList0.extend(myBytes)  # badList0 = [97, 98, 99, 49, 50, 51]

badList1 = []
badList1.extend(bytearray(myBytes))  # badList1 = [97, 98, 99, 49, 50, 51]

badList2 = list(myBytes)  # badList2 = [97, 98, 99, 49, 50, 51]

badList3 = [bytes(b) for b in myBytes]  # result is 6 entries with 97, 98, 99, 49, 50, and 51 '\x00's, respectively

是否有一种清晰有效的方法来获得单个bytes对象列表([b'a', b'b', b'c', b'1', b'2', b'3'])而不是代表这些字节的整数值列表的预期结果?

python python-3.x
1个回答
3
投票

这是丑陋的方式:

[bytes([c]) for c in bs]

不确定是否有更漂亮的东西。


2
投票

解码为utf-8并编码回字节数组:

list(map(str.encode, myBytes.decode("utf-8")))
# [b'a', b'b', b'c', b'1', b'2', b'3']

1
投票

我用过:[bytes([myBytes[i]]) for i in range(len(myBytes))]并得到输出:[b'a', b'b', b'c', b'1', b'2', b'3']


1
投票

这里是一种方式:

[bytes(i, 'utf-8') for i in myBytes.decode('utf-8')]

# [b'a', b'b', b'c', b'1', b'2', b'3']
© www.soinside.com 2019 - 2024. All rights reserved.