我有一个单元输入流,我想过滤出字节“ \ x00”。这些空字节仅出现在打印变量时。例如,我要从以下变量中滤除\ x00。

example = b'\n\x00[\x007\x000\x004\x005\x001\x009\x004\x009\x000\x006\x008\x004\x002\x00]\x00 \x00-\x00 \x00D\x00S\x00I\x00 \x00-\x00 \x00R\x00e\x00s\x00p\x00o\x00n\x00s\x00e\x00'


任何帮助都非常感谢。

最佳答案

您可以将filterNone过滤器一起使用(删除伪造的元素)并强制重建bytes对象:

example = b'\n\x00[\x007\x000\x004\x005\x001\x009\x004\x009\x000\x006\x008\x004\x002\x00]\x00 \x00-\x00 \x00D\x00S\x00I\x00 \x00-\x00 \x00R\x00e\x00s\x00p\x00o\x00n\x00s\x00e\x00'
result = bytes(filter(None,example))


结果

b'\n[7045194906842] - DSI - Response'


(通用答案是result = bytes(x for x in example if x != character_code),在这种情况下,我们通常不使用filter,因为它需要一个lambda

10-07 20:35