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

如何使用Python实现ID关联的两个文本文件的搜索匹配与合并操作

Python实现两个文本文件按ID匹配合并

需求说明

现有两个结构不同的文本文件,需按ID关联合并,保留file1原有格式,仅将file2的匹配内容追加到file1对应a=行的末尾。

现有文件结构

file1.txt

a=id01
desc=sample1
attribute1

a=id02
desc=sample2
attribute1
attribute2

a=id05
desc=sample5

a=id03
desc=sample3

a=id04
desc=sample4

file2.txt

id01=sample text id01 
id05=sample text id05
id02=sample text id02 
id03=sample text id03
id04=sample text id04 

预期输出(output.txt)

a=id01;  id01=sample text id01 
desc=sample1
attribute1

a=id02; id02=sample text id02 
desc=sample2
attribute1
attribute2

a=id03; id03=sample text id03 
desc=sample3

a=id04; id04=sample text id04 
desc=sample4

a=id05; id05=sample text id05 
desc=sample5

实现思路

  • 优先读取file2构造ID映射字典,用ID做key、整行内容做value,后续匹配效率更高
  • 逐行读取file1,判断行是否以a=开头:
    • 是则提取行内ID,查字典匹配到对应内容后,用分号拼接写入输出文件
    • 否则直接原样写入输出文件,保留原有格式、空行不变

完整代码

# 构造file2的ID映射字典
id_map = {}
with open('file2.txt', 'r', encoding='utf-8') as f2:
    for line in f2:
        line_stripped = line.strip()
        # 跳过空行避免报错
        if not line_stripped:
            continue
        # 限制只分割一次,避免值内容含=时出错
        id_val = line_stripped.split('=', 1)[0]
        id_map[id_val] = line.rstrip('\n')

# 处理file1并写入结果
with open('file1.txt', 'r', encoding='utf-8') as f1, open('output.txt', 'w', encoding='utf-8') as out_f:
    for line in f1:
        if line.startswith('a='):
            # 提取a=后的ID
            current_id = line.strip().split('=', 1)[1]
            if current_id in id_map:
                # 拼接后写入
                new_line = f"{line.rstrip('\n')}; {id_map[current_id]}\n"
                out_f.write(new_line)
                continue
        # 非a=开头的行原样写入
        out_f.write(line)

内容的提问来源于stack exchange,提问作者three to two

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:57:04