0

我有数千个 CSV 文件,其中大多数都有以下列

threadSubject
bccList
sender_name
recipient_names
sender  
dateReceived
date    
recipients
subject 

不幸的是,取决于 CSV 文件,如果存在,每列可能位于不同的列号,因此使解析复杂化。

我需要做的是从输入 CSV 文件中仅提取这些选定的列并将它们全部放入单个输出文件中。

我是 python 新手,确信有非常简单的方法可以实现这一点,但我无法弄清楚。我不确定是否应该使用 Pandas 或其他机制。

在逻辑代码中,它或多或少应该像这样工作。

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...

你们中的任何人有什么建议如何以聪明的pythonic方式做到这一点吗?

我考虑过 bash 并手动解析它,但认为在您的帮助下学习如何在 python 中执行它可能是一个好主意。

ps背景是我需要浏览过去5年的所有电子邮件,并找出每天发送第一封电子邮件和最后一封电子邮件的时间。我使用 Mork 工具基于 Thunderbird MSF 文件创建的 CSV。一旦我完成了这个 CSV 解析,我需要找到一种简单的方法来获取同一天第一封电子邮件和最后一封电子邮件的时间。但这是另一个故事。

提前感谢所有建议。

4

1 回答 1

0

如果所有文件中的列名都相同,请使用 csv.DictReader 来完成这项工作。

Python csv.DictReader 文档

您可以直接引用字段名称而不是列号。

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

希望这可以帮助。

于 2013-08-07T01:38:42.607 回答