用于查找不常见的行的Python脚本

时间:2016-12-21 13:59:21

标签: python

我有两个文件如下,第一个目标是通过比较第一列前14位来获取1.csv和2.csv中不常见的行。

第二个目标是,如果1.csv中的第一列与2.csv中的任何第一列匹配,则将第二列的相同行与1.csv的第二列进行比较,并打印不是存在于1.csv中,存在于2.csv

脚本如下所示,但无法获得所需的输出

jpa

2 个答案:

答案 0 :(得分:0)

如果格式是固定的,那么将每条线分成2个部分是一个解决方案,因此您只能按照您的要求比较前14个数字。

您所拥有的解决方案只进行逐行比较。如果你拆分行,你可以迭代任何一个文件的数据,并使用简单的'in'来查看该行是否在另一个文件中。

答案 1 :(得分:0)

在处理文件时,第一件事总是使用with,它会减少一行,永远不会忘记关闭文件:

with open('1.csv', 'r') as file1, open('2.csv', 'r') as file2:
    file1_lines = file1.readlines()
    file2_lines = file2.readlines()

file1_headers = [line[:14] for line in file1_lines]
file2_headers = [line[:14] for line in file2_lines]

with open('update.csv', 'w') as out_file:
    # Objective 1: lines that have their first 14 digit in one file only
    for line in file1_lines:
        if line[:14] not in file2_headers:
            out_file.write(line)
    for line in file2_lines:
        if line[:14] not in file1_headers:
            out_file.write(line)
    # Objective 2: Lines that are in file 2 but not 1
    for line in file2_lines:
        if line not in file1_lines:
            out_file.write(line)

你的代码在任何地方都没有提到14,这应该首先提醒你;-)欢呼!