python - 如何始终忽略字符串中的一个字节

标签 python python-3.x byte

我正在处理一个持续返回许多 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/

相关文章:

java - InputStream 读取字节数组 - 它会混合消息吗

c# - 如何正确地将以字节为单位的文件大小转换为兆字节或千兆字节?

Python decimal.InvalidOperation 错误

python - 如何防止anaconda环境读取本地安装的库

python - urllib没有返回请求的内容

python - 使用Python删除包含非ascii字符的单词

python - Mypy 产生不兼容的签名错误,但满足 Liskov 替换原则

python - tkinter - ttk TreeView : see column text

c - 4字节(32位)的IEEE 754算术

python - 如何通过析取语句(逻辑 "or")对 pandas DataFrame 进行切片?