我目前使用Python 2.6。我需要編寫一個腳本來讀取'master'csv文件,然後將第二個csv文件中的條目與主文件進行匹配以確定其有效性。主CSV文件和輔助CSV文件具有相同數量的列,每個列中具有相似的值。我試圖循環遍歷輔助csv文件中的每個條目,然後將它們與主csv中的每個條目進行匹配。如果輔助csv文件中的給定條目與主csv中的任何條目相匹配,則該條目將被視爲有效。使用python驗證csv中基於主csv文件的條目
主CSV文件看起來是這樣的:
ID_A,ColumnB,ID_C,ColumnD
1,text,0,words
1,text,1,words
2,text,A,words
3,text,CC,words
凡「ID」值所駕駛的驗證過程和「列」值是輔助性的。首先,我需要將這個主csv放入內存中,以便我可以比較來自輔助csv的條目。爲此,我試圖將csv讀入字典。然後我遍歷每一行,但只能真正弄清楚如何打印這些值。
with open ('master.csv') as csvfile:
masterReader = csv.DictReader(csvfile)
for row in masterReader:
print(row['ID_A'], row['ID_C'])
而不只是閱讀和打印這些文件,我需要找出一種方法來將它們存儲在內存中,所以我可以在二級CSV對條目加以比較,它看起來像這樣:
ColumnA,ColumnB,ID_C,ID_D
text,words,160,7
text,words,250,BB
text,words,1,0
text,words,15,A
其中ID_C與主ID_A進行比較,ID_D與主ID_C進行比較。我認爲最好先對master-ID_A進行測試,因爲如果沒有匹配,那麼對master-ID_C進行測試就沒用了。
我試過使用另一篇文章的方法,我發現here和(comparing varied CSV files in python),但似乎無法得到我想要的結果。
我想創建一個具有兩個獨立函數的類,它們將讀取主csv,然後根據輸入ID值驗證輔助csv中的條目。我還希望能夠更改輸入主控(具有相同的格式)和輔助csv,以便腳本可以用於多個數據集。當輔助條目被驗證時,我想看到(ID_C,ID_D,Valid)。
我希望這是有道理的,我一直在熬夜。讓我知道,如果我可以在這裏澄清任何東西
感謝您的真棒答案!我有一個關於如何微調第二個功能的問題。如果不是輸入輔助csv來驗證所有條目,我只想傳遞個別值「ID_C」和「ID_D」?難道是這樣的:'高清驗證(自我,ID_C,ID_D):鍵=(ID_C,ID_D)返回[列表(鍵)+在self.master [關鍵]的鍵鍵]'? – lastLeafFallen
@lastLeafFallen我添加了關於如何驗證單個密鑰的示例。 – niemmi
好極了,我想現在實現和我一直在這條線得到一個語法錯誤:'self.master = {(行[「ID_A」],行[「ID_C」])爲讀者排}'我的調試器不斷指出語法錯誤在單詞「for」的「o」和「r」之間。任何想法爲什麼? – lastLeafFallen