如何在b''上分割字节数组

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

我有如下数组:

x = [b'ab ab bc' b'rd rd kh']

出于某些原因,我不知道为什么第一个字节编码的字符串(b'ab ab bc')与第二个字节编码的字符串(b'rd rd kh')之间没有逗号。我不知道如何将它们拆分成类似如下的列表:

x = [b'ab ab bc', b'rd rd kh']
# decode
res = [i.decode('utf-8') for i in x]

我希望结果像:res = ['ab ab bc', 'rd rd kh']

python bytestring
2个回答
1
投票

Adjacent bytes literals in the source code are automatically concatenated

允许多个相邻的字符串或字节文字(用空格分隔),可能使用不同的引用约定,并且它们的含义与它们的串联相同。因此,bytes等于"hello" 'world'

源代码如下:

"helloworld"

完全等效于(编译为相同的字节码):

 x = [b'ab ab bc' b'rd rd kh']

要拆分它们,您需要按照显示的内容实际添加逗号:

 x = [b'ab ab bcrd rd kh']

x = [b'ab ab bc', b'rd rd kh'] # ^ added comma 的处理完全如您所显示。没有跳过整个逗号而不是整个字符串并编写自定义解析代码的方法,这比仅添加逗号要痛苦得多。


0
投票

该列表中没有逗号的原因是因为python隐式字符串构造。 x实际上是一个列表,其中包含一个单字节字符串decode

拆分是不可能的,如您所见,您可以在bcrd之间拆分它,但我认为这不是您想要做的事情

© www.soinside.com 2019 - 2024. All rights reserved.