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

Python如何从文本文件提取起始为45 3F后接的指定十六进制内容

问题原因分析
  • 正则规则不支持小写十六进制:原正则[0-9A-F]仅匹配大写A-F的十六进制字符,若输入文件中存在小写a-f的十六进制内容,会直接匹配失败。
  • 缺少指定后缀匹配:需求明确要求匹配内容末尾固定为00 00,原正则没有加入该限定,也不符合输入文件的实际结构。
  • 遗漏依赖导入:原代码未导入re模块,运行时会直接报错,也会导致无法得到匹配结果。
  • 未指定文件编码:不同操作系统默认文件读写编码不一致,可能出现文件读取乱码,导致正则匹配失败。
修正后代码
import re

# 读取文件时显式指定编码,避免乱码
with open('file.txt', 'r', encoding='utf-8') as reader:
    my_data = reader.read()

# 正则同时支持大小写十六进制匹配,且添加末尾00 00的限定
matches = re.findall(r"45 3F ([0-9A-Fa-f]{2} [0-9A-Fa-f]{2} [0-9A-Fa-f]{2}) 00 00", my_data)
# 也可以使用忽略大小写的flag简化正则写法:
# matches = re.findall(r"45 3F ([0-9A-F]{2} [0-9A-F]{2} [0-9A-F]{2}) 00 00", my_data, flags=re.IGNORECASE)

data_to_write = " ".join(matches)
with open('out.txt', 'w', encoding='utf-8') as writer:
    writer.write(data_to_write)

使用你提供的示例输入运行上述代码,输出文件内容将完全符合预期。

内容的提问来源于stack exchange,提问作者user6782081

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:36:04