Python提取二进制文件指定片段的实现求助
解决方案:提取二进制文件中每行的中间120位数据
需求明确
假设每行是180位由0/1组成的字符串,比如:
000...000(前30位)111...111(中间120位)000...000(后30位)
我们需要跳过前后各30位,提取中间的120位并保存到txt文件。
关于转列表提取的可行性
完全可行,但其实没必要——Python字符串本身支持高效的切片操作,比转列表更简洁直接。
最优实现方案(字符串切片)
直接利用Python的字符串切片功能,一步提取目标内容:
# 假设你已经实现了文件输入,这里直接完成处理与保存 with open('your_input_file.bin', 'r') as in_file, open('output.txt', 'w') as out_file: for raw_line in in_file: # 去除行尾的换行符或空白字符 line = raw_line.strip() # 跳过长度不符合180位的异常行(可选,根据你的需求调整) if len(line) != 180: continue # 切片提取中间120位:索引30到150(左闭右开,刚好覆盖30+120位) middle_content = line[30:150] # 写入输出文件,每行结尾加换行符 out_file.write(middle_content + '\n')
若坚持用列表方式提取
如果一定要将字符串转为列表处理,也能实现,只是多了两步转换:
with open('your_input_file.bin', 'r') as in_file, open('output.txt', 'w') as out_file: for raw_line in in_file: line = raw_line.strip() if len(line) != 180: continue # 转列表 line_list = list(line) # 列表切片提取中间部分 middle_list = line_list[30:150] # 转回字符串 middle_content = ''.join(middle_list) out_file.write(middle_content + '\n')
总结
两种方法都能达成需求,但字符串切片的方式代码更简洁,执行效率也更高,优先推荐使用。
内容的提问来源于stack exchange,提问作者SyntaxError404
相关产品推荐
相关产品推荐

