You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:12:17