【问题标题】:csv file comparison using python使用python比较csv文件
【发布时间】:2014-04-26 05:52:57
【问题描述】:

我试过这个脚本来比较两个 csv 文件:

import csv

file1 = open("1.csv", "r")
reader1 = csv.reader(file1)
reader1.next()
file2 = open("2.csv", "r")
reader2 = csv.reader(file2)
reader2.next()
file3 = open("file3.txt", "w")
file4 = open("file4.txt", "w")
file1.seek(0, 0)
file2.seek(0, 0)
list1 = file1.readlines()
list2 = file2.readlines()
for i in list1:
    for j in list2:
        if i == j:
            file3.write(i)
            file3.write(j)
        else:
            file4.write(i)
            file4.write(j)
    continue

并且我得到的输出包含标题以及不匹配的文件正在重复。例如,如果我的 1.csv 包含

Name    Salary   
A       20000
B       15000
C       10000

2.csv 包含

Name    Salary
A       40000
D       10000
B       15000
C        9000

输出应该是

file3: B 15000 B 15000

file4: A 20000 A 40000
       C 10000 C 9000

------(no D in 1.csv) D 10000

【问题讨论】:

    标签: python file csv comparison


    【解决方案1】:

    用名字作为键,薪水作为值来比较字典不是更容易吗?填充dict 的一种方法可能是:

    import csv
    
    csv.register_dialect('spaces', delimiter = ' ')
    
    salaries1 = {}
    with open('l1.csv') as l1:
       reader1 = csv.reader(l1, dialect='spaces')
       reader1.next()    # skip header
    
       salaries1 = {row[0]:row[1] for row in reader1}
    
     print salaries1
    

    【讨论】:

    • 克劳斯我只是在我的实时要求中举了一个小例子,以便比较更多的列
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多