我有几千个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...
你们中有谁会建议如何用灵巧的节奏曲的方式来做这件事?
我考虑过bash并手动解析它,但我认为在您的帮助下学习如何在python中实现它可能是个好主意。
附注:它的背景是,我需要检查所有的电子邮件过去5年,并了解什么时候发出了第一封电子邮件和最后一封电子邮件在每一天。我已经创建了基于雷鸟MSF文件使用Mork工具创建的CSV。一旦我完成了这个CSV解析,我需要找到一个简单的方法来获得第一封电子邮件和当天最后一封电子邮件的时间。BUt,这是另一个故事。
提前感谢您的建议。
发布于 2013-08-07 01:38:42
如果所有文件中的列名相同,则使用csv.DictReader来完成这项工作。
Python csv.DictReader文档
您可以直接引用字段名而不是列号。
import csv
file = open('Path_to_file','rb')
for record in csv.DictReader(file):
print record['Column_Name']希望这能有所帮助。
https://stackoverflow.com/questions/18092173
复制相似问题