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

Python字符串切片:读取文件指定子串后按十六进制值截取内容

解决方案:提取文件中ASDF后的指定长度子串

我来给你提供一个实用的Python实现方案,完美匹配你描述的需求——从文件里定位ASDF标记,读取其后两位十六进制字符作为长度值,再截取对应长度的子串。

核心思路

用正则表达式精准匹配ASDF后的格式:

  • 匹配ASDF(根据示例是带空格的ASDF ,可按需调整)
  • 捕获后续2个十六进制字符(覆盖0-9、A-F/a-f的大小写情况)
  • 将捕获的十六进制值转为十进制整数x,再提取后续x个字符

代码实现

import re

def extract_asdf_substrings(file_path):
    # 读取目标文件的全部内容
    with open(file_path, 'r') as f:
        content = f.read()
    
    # 正则匹配模式:匹配ASDF + 空格 + 2位十六进制字符,再捕获后续所有字符(用于截取x长度)
    pattern = re.compile(r'ASDF ([0-9A-Fa-f]{2})(.*?)')
    results = []
    
    # 遍历所有匹配到的ASDF实例
    for match in pattern.finditer(content):
        hex_length_str = match.group(1)
        # 把十六进制字符串转成十进制整数x
        x = int(hex_length_str, 16)
        # 从后续字符中截取前x个
        target_substring = match.group(2)[:x]
        results.append({
            'hex_length': hex_length_str,
            'decimal_x': x,
            'extracted_substring': target_substring
        })
    
    return results

# 测试调用(替换成你的文件路径即可)
if __name__ == '__main__':
    file_path = 'your_target_file.txt'
    extracted_data = extract_asdf_substrings(file_path)
    for idx, item in enumerate(extracted_data, 1):
        print(f"第{idx}个匹配结果:")
        print(f"  十六进制长度标记:{item['hex_length']}")
        print(f"  转换后的x值:{item['decimal_x']}")
        print(f"  提取的子串:{item['extracted_substring']}\n")

针对你给出的示例文件的输出

假设你的文件内容是:

1390145993 ASDF 06452048091938HFDJGK3985719 ASDF 031395829382235235235235235235DHFGAJDGF ASDF 103235923785907230646246246346734735746845698

运行代码后会得到:

第1个匹配结果:
  十六进制长度标记:06
  转换后的x值:6
  提取的子串:452048

第2个匹配结果:
  十六进制长度标记:03
  转换后的x值:3
  提取的子串:139

第3个匹配结果:
  十六进制长度标记:10
  转换后的x值:16
  提取的子串:3235923785907230

额外说明

  • 如果ASDF后面的字符不足2位,或者后续字符长度小于x,代码会自动截取现有内容;如果需要严格校验(比如报错提示),可以在代码里加判断逻辑
  • 正则里的空格要和文件中ASDF后的分隔符一致,如果是其他分隔符(比如无空格、制表符),直接调整pattern里的空格部分即可
  • 十六进制字符不区分大小写,代码已经兼容A-F和a-f两种情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:13:47