2015-12-03 92 views
-2

我有兩個CSV文件。Python CSV比較兩個文件?

說一去

Bob|Address|AA22 XXX

說第二去

|AA22 XXX|32MPH

如何使代碼檢查這兩個文件,看看他們都在AA22 XXX並使其創建一個新的文件,所有的信息在?

print ("Here is the list of speeding cars") 
    for i,x in zip (Speeding_Cars,Valid_Number_Plates): 
     print (i,x) 
     with open ("Cars.csv","w")as f: 
      f_csv = csv.writer(f) 
      writer = csv.writer(f,delimiter = ",") 
      writer.writerows(zip(Speeding_Cars,Valid_Number_Plates)) 


    f1 = ("Data.csv", "r") 
    f2 = ("Cars.csv","r") 
    f3 = ("Results.csv","w") 
    c1 = csv.reader(f1) 
    c2 = csv.reader(f2) 
    c3 = csv.writer(f3) 

    if f1[3] == f2[2]: 
     writer = csv.writer(f,delimiter = ",") 
     writer.writerows(zip(f1 , f2)) 
+0

你提的問題是非常不清楚。我建議你閱讀[我如何問一個好問題?](https://stackoverflow.com/help/how-to-ask),然後回來編輯這個問題,使其可以回答。 – pzp

+0

我不知道該如何表達。 –

+0

首先添加一些示例輸入文件及其所需的輸出。 – pzp

回答

1

首先,啜許可證數據字典,由板指數 數

with open('licences.csv') as f: 
    ls = {plate:[name, addr] for name, addr, plate in [line.split('|') for line in f]} 

那麼它的門票之交,

with open('tickets.csv') as f: 
    ts = [line.split('|') for line in f] 

最後,我們可以加入我們的數據並將結果寫入文件

with open('results.csv', 'w') as f: 
    f.write('\n'.join(['|'.join(ls[plate]+[plate, speed]) for plate, speed in ts])) 

PS 加入加入我們的數據在代碼join是兩個完全不同的東西...

+0

我收到錯誤 –

+0

文件「E:\ A453 \ Task 3 \ Program.py」,第168行,在 MainMenu() 文件「E:\ A453 \ Task 3 \ Program.py」,第24行,在MainMenu SpeedTrap() SpeedTrap中的文件「E:\ A453 \ Task 3 \ Program.py」,第55行, CarSpeed(Measurement_Use) 文件「E:\ A453 \ Task 3 \ Program.py」,行148 ,在CarSpeed ls = {plate:[name,addr]爲name,addr,plate在[line.split('|')for line in f]} File「E:\ A453 \ Task 3 \ Program.py 「,line 148,in ls = {name:name,addr] name,addr,plate in [line.split('|')for line in f]} ValueError:需要多個值才能解包 –

+0

@ThomasLucas你得到的錯誤意味着當你分割文件的一行時,使用'''''作爲分隔符,你將獲得一個包含單個項目的列表,而不是你期待的三個項目。爲什麼會發生?我不知道...檢查你的輸入文件中是否有不符合你的問題中描述的'name | address | plate'的模式。 – gboffi