我有一个非常大的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的行。 我想的是
读取文件并删除包含ABC的每一行,但这样可以摆脱我实际需要的行。我只想删除要删除的实体列中包含ABC的行。
在python中使用csv模块并尝试实现相同的目标。我已经阅读了csv中可用的函数,但它似乎没有提供任何让我按字段按字段分隔的内容。
我不一定在代码中寻找答案,但欢迎任何有关如何解决此问题的一般性建议。
非常感谢。
答案 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