[英]Compare CSV files using python
嗨,我需要幫助比較兩個csv文件...並將匹配的記錄從兩個文件轉換為輸出文件...並將不匹配的記錄轉換為另一個輸出文件...例如:我的第一個csv文件包含兩列Name和Salary數據為
A 20000
B 15000
C 10000
D 5000
第二個CSV文件包含名稱和薪水,數據為
A 40000
D 10000
B 15000
我的輸出應該是兩個文件,匹配的文件分別包含來自file1和file2的B 15000 B 15000,而第二個文件包含不匹配的記錄,如
A 20000,A 40000
C 10000,-------(no record in file2)
D 5000, D 10000
f1_in = open("f1.csv","r")
f1_dict = {}
for line in f1_in:
l = line.split()
f1_dict[l[0].strip()] = l[1].strip()
f1_in.close()
f2_in = open("f2.csv","r")
f2_dict = {}
for line in f2_in:
l = line.split()
f2_dict[l[0].strip()] = l[1].strip()
f2_in.close()
f_same = open("same.txt","w")
f_different = open("different.txt","w")
for k1 in f1_dict.keys():
if k1 in f2_dict.keys() \
and f2_dict[k1] == f1_dict[k1]:
f_same.write("{0}, {1}\n".format(str(k1)+" "+str(f1_dict[k1]),
str(k1)+" "+str(f2_dict[k1])))
elif not k1 in f2_dict.keys():
f_different.write("{0}, {1}\n".format(str(k1)+" "+str(f1_dict[k1]),
"------"))
elif not f2_dict[k1] == f1_dict[k1]:
f_different.write("{0}, {1}\n".format(str(k1)+" "+str(f1_dict[k1]),
str(k1)+" "+str(f2_dict[k1])))
f_same.close()
f_different.close()
編輯:要按鍵對字典排序,請在對鍵循環之前( for k1 in f1_dict.keys()
):
# get the keys as a list
my_keys = f1_dict.keys()
# sort it
my_keys.sort()
# use sorted list
for k1 in my_keys:
要按值對字典排序,請在循環鍵之前:
# return a list of tuple : [(key1,value1),(key2,value2)]
my_zip = zip(f1_dict.keys(), f1_dict.values())
# now you have a list you can sort it :
my_sorted_list = sorted(my_zip, key=lambda value, value[2])
key=lambda value, value[2]
表示my_zip
將使用列表中每個元組的第二個值進行排序。
# use sorted list
for t in my_sorted_list:
# t is a tuple
k1 = t[0]
value = t[1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.