【发布时间】:2013-04-22 16:29:56
【问题描述】:
我正在尝试比较两个 csv 文件(fileA 和 fileB),并从 fileA 中删除在 fileB 中找不到的所有行。我希望能够在不创建第三个文件的情况下做到这一点。我以为我可以使用 csv writer 模块来做到这一点,但现在我在猜测自己。
目前,我正在使用以下代码从文件 B 中记录我的比较数据:
removal_list = set()
with open('fileB', 'rb') as file_b:
reader1 = csv.reader(file_b)
next(reader1)
for row in reader1:
removal_list.add((row[0], row[2]))
这是我卡住的地方,不知道如何删除行:
with open('fileA', 'ab') as file_a:
with open('fileB', 'rb') as file_b:
writer = csv.writer(file_a)
reader2 = csv.reader(file_b)
next(reader2)
for row in reader2:
if (row[0], row[2]) not in removal_list:
# If row was not present in file B, Delete it from file A.
#stuck here: writer.<HowDoIRemoveRow>(row)
【问题讨论】:
-
sqlite是一个基于平面文件的数据库,它的驱动程序包含在现代版本的 Python 中。考虑到您正在尝试做的事情,这可能是一个更好的选择。 -
抱歉这个愚蠢的问题,但这会创建文件B的精确副本,不是吗?
标签: python csv python-2.7 module delete-row