首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python智能解析器与列匹配

python智能解析器与列匹配
EN

Stack Overflow用户
提问于 2013-08-06 23:25:34
回答 1查看 1.9K关注 0票数 0

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

代码语言:javascript
复制
threadSubject
bccList
sender_name
recipient_names
sender  
dateReceived
date    
recipients
subject 

不幸的是,根据CSV文件的不同,每一列(如果存在)可能位于不同的列号,因此使解析变得复杂。

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

我对python还不熟悉,我确信有非常简单的方法可以实现这一点,但我无法理解。我不确定是否应该使用Pandas或其他机制。

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

代码语言:javascript
复制
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,这是另一个故事。

提前感谢您的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-07 01:38:42

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

Python csv.DictReader文档

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

代码语言:javascript
复制
    import csv
    file = open('Path_to_file','rb')
    for record in csv.DictReader(file):
        print record['Column_Name']

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18092173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档