python - 从字符串中去除 \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....”
任何提示我在这里做错了什么?
解决方案
strip
函数族仅从字符串的末尾删除;你\x02
不是字符串中的最后一个字符。如果要从字符串的右侧删除\x00
和的任何组合,请将两者都传递给:\x02
rstrip
some_information = some_information.decode('ascii').rstrip('\x00\x02')
推荐阅读
- apache-kafka - Spring-Kafka 的替代品(Kafka 库/实现)
- python - 如何修复此提示 anaconda error msg
- mdx - Sime 动态替换 WeekOfYear
- solr - 在 Solr 查询相关的侦听器配置中指定的查询应该有多精确?
- ios - 使用自动布局的 UITableViewCell 中的 MKSnapshotter 大小问题
- c# - Nuget包引用导致“无法加载文件或程序集”?
- java - java模块系统中需要静态的实际使用
- github - 如何将构建失败电子邮件限制为仅 travis CI 中的特定分支?
- node.js - 异步转换流不能并行工作吗?
- python - 循环中方法的身份相等