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

Python对比两个TXT文件列表行并输出匹配数结果异常排查

问题根因
  • 原代码错误地将整行字符串直接拆分为单个字符的列表做交集统计,逗号、单个数字字符(比如多行间共有的'0'、'2')都会被算作匹配项,最终得到的统计值远高于实际相同数值的数量
  • 正确逻辑应该是先按逗号分割每行内容,提取出独立的数值项后,再统计两个行数值集合的交集大小
修复代码(适配期望正确输出1)

该版本保留原始数值的格式(如01、02的前导0不做处理),统计完成后将匹配数量拼接到原始行首输出:

# 提前读取file2的所有行,避免重复IO操作
with open('C:\\Temp\\File2.txt', 'r', encoding='utf-8') as f:
    file2_lines = [line.strip() for line in f if line.strip()]

with open('C:\\Temp\\File1.txt', 'r', encoding='utf-8') as f1, open('C:\\Temp\\Output.txt','w', encoding='utf-8') as f_out:
    for line1 in f1:
        line1 = line1.strip()
        if not line1:
            continue
        # 按逗号分割得到数值集合
        nums1 = set(line1.split(','))
        for line2 in file2_lines:
            nums2 = set(line2.split(','))
            match_count = len(nums1 & nums2)
            f_out.write(f"{match_count},{line2}\n")
修复代码(适配期望正确输出2)

该版本会将所有数值转换为整数去掉前导0,最终输出的数值项均为整数格式:

with open('C:\\Temp\\File2.txt', 'r', encoding='utf-8') as f:
    # 提前处理file2的行,转成整数列表
    file2_data = []
    for line in f:
        line = line.strip()
        if not line:
            continue
        nums = [int(num) for num in line.split(',')]
        file2_data.append(nums)

with open('C:\\Temp\\File1.txt', 'r', encoding='utf-8') as f1, open('C:\\Temp\\Output.txt','w', encoding='utf-8') as f_out:
    for line1 in f1:
        line1 = line1.strip()
        if not line1:
            continue
        nums1 = set(int(num) for num in line1.split(','))
        for nums2 in file2_data:
            match_count = len(nums1 & set(nums2))
            # 拼接匹配数和转成整数的数值项
            output_line = ','.join([str(match_count)] + [str(n) for n in nums2]) + '\n'
            f_out.write(output_line)

内容的提问来源于stack exchange,提问作者J. Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:18:04