2013-08-06 33 views
0

我有幾十萬的CSV文件,其中大多有以下幾列蟒蛇CSV智能分析器和列匹配

threadSubject 
bccList 
sender_name 
recipient_names 
sender 
dateReceived 
date  
recipients 
subject 

不幸的是依賴於CSV文件的每一列(如果存在)可能是在不同的columnt數字因此使解析變得複雜。

我需要做的是從輸入CSV文件中只提取這些選定的列,並將它們全部放入單個輸出文件中。

我是python的新手,我確定有完美的方法可以實現這一點,但我無法弄清楚。 我不確定是否應該使用熊貓或其他機制。

在邏輯代碼中它應該或多或少地像這樣工作。

for file in (all files in current folder); do 
    open file; 
    get header and find out at which positions are interesting columns 
    #or match by column name; 

    dump interesting columns into output file in the right order; 
    close file; 
done 

我的最棘手的部分是get header...

請問你們有任何意見如何做到這一點的智能Python的方式?

我想到了bash並手動解析它,但認爲在您的幫助下學習如何在python中完成它可能是個好主意。

p.s.背景是,我需要瀏覽過去5年的所有電子郵件,並瞭解每天在什麼時間發送第一封電子郵件和最後一封電子郵件。我使用Mork工具基於Thunderbird MSF文件創建了CSV。一旦我完成了這個CSV解析,我需要找到簡單的方法來在同一天獲得第一封電子郵件和最後一封電子郵件的時間。這是另一回事。

在此先感謝您的所有建議。

+0

我強烈建議尋找熊貓庫並通過將它們導入爲數據框並在其中執行操作來解析文件,如果解析正確,列順序將不再起作用。 – simplicity

回答

0

如果列名在所有文件中都是相同的,請使用csv.DictReader來完成這項工作。

Python csv.DictReader Documentation

您可以參考的字段名稱,而不是直接的列數。

import csv 
    file = open('Path_to_file','rb') 
    for record in csv.DictReader(file): 
     print record['Column_Name'] 

希望這會有所幫助。

+0

非常感謝。這是等式的一部分。 對於愚蠢的問題抱歉,但是我怎樣才能合併多個文件中的選定列並將它們保存到單個文件中?我需要逐行合併所有選定的列。 我讀過一點python,但仍然有點困惑:( 它是如此不同於C,bash等,對我來說主要問題是,我沒有用過在python中編寫,因此不知道所有的概念;( 請問你們中的任何人請給我一些例子的提示? THANKs預先。 – user2658716

+0

問題是,有趣的列不是全部在每個文件中如何跳過空字段並且不會在控制檯上導致錯誤? – user2658716

+0

在跨數據集合合時,您必須保持參照完整性。關係的基數可能是1-1或1-M或MM - 以增加處理複雜性的順序他們。您是否有跨文件的公用字段(例如電子郵件ID等關鍵字段),以幫助您匹配數據? – anset