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

从文本文件中移除info相同且data十六进制值相同的行

解决方案

实现思路

要完成需求,需要先统计每个info对应的所有data实际十六进制值,再筛选出那些info下存在不同data值的行:

  • 解析每行的info和data,把data转换成统一数值(忽略十六进制的大小写、前缀长度差异)
  • 记录每个info对应的所有唯一data值集合
  • 再次遍历原文件,只保留那些info对应的data集合大小大于1的行

代码实现

import re

# 第一步:统计每个info对应的所有唯一data数值
info_data_map = {}
with open("in1.txt", "r") as fin:
    for line in fin:
        line = line.strip()
        if not line:
            continue
        # 提取info和data的值
        info_match = re.search(r'info="(0x[0-9a-fA-F]+)"', line)
        data_match = re.search(r'data="(0x[0-9a-fA-F]+)"', line)
        if info_match and data_match:
            info = info_match.group(1).lower()  # 统一info为小写,消除大小写差异
            data_hex = data_match.group(1)
            data_value = int(data_hex, 16)  # 转十进制,消除长度/大小写差异
            # 更新info对应的data集合
            if info not in info_data_map:
                info_data_map[info] = set()
            info_data_map[info].add(data_value)

# 第二步:筛选符合条件的行写入out.txt
with open("in1.txt", "r") as fin, open("out.txt", "w") as fout:
    for line in fin:
        line = line.rstrip('\n')
        if not line:
            continue
        info_match = re.search(r'info="(0x[0-9a-fA-F]+)"', line)
        if info_match:
            info = info_match.group(1).lower()
            # 仅保留该info下有多个不同data值的行
            if len(info_data_map.get(info, set())) > 1:
                fout.write(line + '\n')

代码说明

  • 用正则精准提取info和data字段值,避免字符串分割的不稳定问题
  • 将info转为小写,确保0x00010AC3和0x00010ac3被识别为同一info
  • 将data转为十进制数值,让0x7和0x00000007被判定为相同值
  • 先统计后筛选的逻辑,确保只保留info对应多种不同data值的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:40:29