我正在处理一个持续返回许多 byte
对象的程序。
它经常在字符串中间返回空 b'00'
。我想完全忽略它,(假设我要制作这些字节的数组)。是包含一个的唯一方法:
if bytes != b'\x00':
# Do something
在我的代码的每个循环/部分中,还是有更好的方法让我跳过这些字节?
奖励问题:当提到 Python 3 中的这种情况时,字节的长“字符串”是“字节对象”、“字节字符串”还是“字节数组”?
什么是正确的术语?
最佳答案
通常您会使用对象的过滤版本,例如:
In [63]: test
Out[63]: 'hello\x00world'
In [68]: for my_bytes in filter(lambda x: x != b'\x00', test):
....: print(my_bytes)
....:
h
e
l
l
o
w
o
r
l
d
请注意,我使用了 my_bytes
而不是 bytes
,这是一个您不想覆盖的内置名称。
类似的你也可以简单的构造一个过滤后的bytes对象来做进一步的处理:
In [62]: test = b'hello\x00world'
In [63]: test
Out[63]: 'hello\x00world'
In [64]: test_without_nulls = bytes(filter(lambda x: x != b'\x00', test))
In [65]: test_without_nulls
Out[65]: 'helloworld'
我通常使用 bytes
对象,因为它不与 python 3 中的字符串共享接口(interface)。当然不是 byte arrays .
关于python - 如何始终忽略字符串中的一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25480433/