我有2個csv文件,分別爲csv1和csv2。CSV比較列值python
csv1
1,9,10
2,10,11
3,11,10
CSV2
2,b
1,a
3,c
我想的csv1第一列的每個值檢查的CSV2第一列,如果有匹配第二列csv2的另一個值是應用程序結束於csv1。 我的最終輸出將是:
1,9,10,a
2,10,11,b
3,11,10,c
我有2個csv文件,分別爲csv1和csv2。CSV比較列值python
csv1
1,9,10
2,10,11
3,11,10
CSV2
2,b
1,a
3,c
我想的csv1第一列的每個值檢查的CSV2第一列,如果有匹配第二列csv2的另一個值是應用程序結束於csv1。 我的最終輸出將是:
1,9,10,a
2,10,11,b
3,11,10,c
使用python的CSV模塊來讀取文件。 https://docs.python.org/2/library/csv.html
比較使用for循環和寫入結果到CSV的兩個文件。
ALGO:
csv
模塊讀取和寫入csv文件。代碼:
import csv
# Create Dictionary structure of csv file 2
with open("/home/vivek/2.csv", "rb") as fp:
root = csv.reader(fp,)
root2 = {}
for i in root:
root2[i[0]] = i[1]
print "Debug 1: Dictionary of file 2:", root2
with open("/home/vivek/output.csv", "wb") as fp:
with open("/home/vivek/1.csv", "rb") as fp1:
output = csv.writer(fp, delimiter=",")
root = csv.reader(fp1,)
for i in root:
#Check first item from the row is present in dictionary.
if i[0] in root2:
i.append(root2[i[0]])
output.writerow(i)
列表追加Vs的級聯:
>>> import timeit
>>> def addtest():
... l = []
... for i in range(1000):
... l +[i]
...
>>> def appendtest():
... l = []
... for i in range(1000):
... l.append(i)
...
>>> print "Time 1:", timeit.timeit('appendtest()', 'from __main__ import appendtest')
Time 1: 110.55152607
>>> print "Time 1:", timeit.timeit('addtest()', 'from __main__ import addtest')
Time 1: 265.882155895
以下應該做你需要什麼,它利用Python的csv模塊。它首先讀取整個的csv2
成,然後可以用來看看,關鍵是目前在閱讀csv1
的字典:
import csv
d_csv2 = {}
with open('2.csv', 'r') as f_csv2:
csv_2 = csv.reader(f_csv2)
for cols in csv_2:
d_csv2[cols[0]] = cols[1]
with open('1.csv', 'r') as f_csv1, open('output.csv', 'wb') as f_output:
csv_1 = csv.reader(f_csv1)
csv_output = csv.writer(f_output)
for cols in csv_1:
if cols[0] in d_csv2:
csv_output.writerow(cols + [d_csv2[cols[0]]])
它創建下列output.csv
文件:
1,9,10,a
2,10,11,b
3,11,10,c
是的,我們可以在同一行寫'with'語句,列表的連接需要更多的時間,然後'append' –
對於是否追加 – StefanNch
請參閱http:// stackoverflow。com/questions/30852710/compare-2-seperate-csv-files-and-write-difference-to-a-new-csv-file-python-2-7/30853120 – Jimilian
你能告訴我們你的東西嗎?做到目前爲止? – ozgur