首页 > 解决方案 > 从字符串中去除 \x00 和 \x02

问题描述

我正在以二进制形式读取文件以获取其中包含的信息。我的目标是从文件中的特定位置和可变长度提取一些字符。我阅读文件如下:

with open("raw_files/P1925aM", "rb") as binary_file:

binary_file.seek(436, 0)

some_information = binary_file.read(331)

some_information = some_information.decode('ascii').rstrip('\x00')

binary_file.close()

输出是一个变量(类“字节”),它包含以下内容:

“17627005 SWU1.1\x00\x00\x00....”

到目前为止,我设法将字节变量解码为 ASCII 并使用以下方法去除 '\x00:

some_information = some_information.decode('ascii').rstrip('\x00')

输出如下: 17627005 SWU1.1 这正是我想要的。

现在我有一个变量(类'str')。如果变量如下所示,我现在遇到的问题是:

“17627005 SWU1.1\x02\x00\x00....”

some_information = some_information.decode('ascii').rstrip('\x02')

不起作用。输出保持“17627005 SWU1.1 \x02\x00\x00....”

任何提示我在这里做错了什么?

标签: pythonpython-3.xstrip

解决方案


strip函数族仅从字符串的末尾删除;你\x02不是字符串中的最后一个字符。如果要从字符串的右侧删除\x00和的任何组合,请将两者都传递给:\x02rstrip

some_information = some_information.decode('ascii').rstrip('\x00\x02')

推荐阅读