在python中过滤csv文件中的特定行

时间:2013-10-30 06:09:01

标签: python csv filter

我有一个非常大的csv文件,每天大约有30,000行和25列。我需要过滤此文件以仅包含我感兴趣的行。 它的形式为:

date, time, user, entity, party1, party2
20131001, 00:01, user1, ABC, XXX, XXX
20131002, 00:01, user2, XYZ/ABC, XXX, ABC
20131003, 00:01, user1, DEF, ABC, XXX

例如,我需要删除所有具有entity = ABC的行。 我想的是

  1. 读取文件并删除包含ABC的每一行,但这样可以摆脱我实际需要的行。我只想删除要删除的实体列中包含ABC的行。

  2. 在python中使用csv模块并尝试实现相同的目标。我已经阅读了csv中可用的函数,但它似乎没有提供任何让我按字段按字段分隔的内容。

  3. 我不一定在代码中寻找答案,但欢迎任何有关如何解决此问题的一般性建议。

    非常感谢。

2 个答案:

答案 0 :(得分:1)

你可以使用Python的csv模块做你想做的事,正如你的建议,例如@DhruvPathak在他的回答中概述(更好的是here),但我认为使用单行awk脚本更简单:

$ awk -F ', ' '{ if ($4 != "ABC") print; }' < file.txt
date, time, user, entity, party1, party2
20131002, 00:01, user2, XYZ/ABC, XXX, ABC
20131003, 00:01, user1, DEF, ABC, XXX

其中file.txt包含您的数据。

答案 1 :(得分:0)

for mycsv_line in csv_reader:
    if mycsv_line[4] != "ABC" :
    #append to result