0

我有一个非常大的 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

例如,我需要删除所有实体 = ABC 的行。我在想

  1. 读入文件并删除包含 ABC 的每一行,但这会删除我实际需要的行。我只想删除要删除的实体列中包含 ABC 的行。

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

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

非常感谢。

4

2 回答 2

1

您当然可以csv按照您的建议和 @DhruvPathak 在他的回答中概述的那样使用 Python 的模块做您想做的事情(最好还是在这里),但我认为使用单行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

wherefile.txt包含您的数据。

于 2013-10-30T06:19:37.390 回答
0
for mycsv_line in csv_reader:
    if mycsv_line[4] != "ABC" :
    #append to result
于 2013-10-30T06:12:02.757 回答