使用Python逐行比对两个TXT文件中每行数据,有相同的数字,但是为何结果好乱啊 ?

作者站长头像
站长
· 阅读数 7

两个记事本文件内容

test1

1,2,3,4,5,6
5,6,7,8,9,10
11,12,13,14,15

test2

2,3,4,5,6,7
7,8,9,10,11,12

我想用逐行比对的方法对比 test1 中的第一行与 test2 中的所有行比对,然后是 test1 的第二行,以此类推,查找对比过程中两行数组中是否有 4 个相同的数字,找到的话就返回test2 中对应的行数据,

下面是我的代码,我就写了这么多,最后发现了好多未知的问题,水平太低,进行不下去了,望各位提携~!

import os, linecache

file1 = open('test1.txt','r',encoding= 'gb18030');
arr1 = file1.readlines()
file2 = open('test2.txt','r',encoding= 'gb18030');
arr2 = file2.readlines()

for fields1 in arr1:
    for fields2 in arr2:
        c = set(fields1).intersection(set(fields2))
        d = len(c)
        if d == 4:
            print(list(c), ",", len(c))

返回结果看着好乱:

['2', ',', '3', ',', '4', ',', '5', ',', '6', ',', '7', '\n'] ['7', '5', '6', '\n', ','] , 5
['2', ',', '3', ',', '4', ',', '5', ',', '6', ',', '7', '\n'] ['4', '2', '3', '5', ','] , 5
回复
1个回答
avatar
test
2024-07-01

arr1 = ["1,2,3,4,5,6", "5,6,7,8,9,10", "11,12,13,14,15"]
arr2 = ["2,3,4,5,6,7", "7,8,9,10,11,12"]

for fields1 in arr1:
    nums1 = set(fields1.split(','))  # 把字符串按逗号分割成单独的数字,并去重
    for fields2 in arr2:
        nums2 = set(fields2.split(','))  # 同上
        c = nums1.intersection(nums2)  # 求两个集合的交集
        d = len(c)
        if d >= 4:  # 满足条件则打印并终止搜索
            print(fields2)
            break
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容