使用python删除csv文件中的特定行

时间:2014-01-30 22:16:51

标签: python csv

如果第二列与字符串匹配,我试图从csv文件中删除一行。我的csv文件包含以下信息:

    Name
15  Dog

我希望删除其中包含“名称”的行。我正在使用的代码是:

import csv

reader = csv.reader(open("info.csv", "rb"), delimiter=',')

f = csv.writer(open("final.csv", "wb"))
for line in reader:
    if "Name" not in line:
        f.writerow(line)
        print line

但不删除“名称”行。我做错了什么?

编辑:我使用了错误的分隔符。将其更改为\ t有效。下面是现在可以使用的代码。     import csv

reader = csv.reader(open("info.csv", "rb"), delimiter='\t')

f = csv.writer(open("final.csv", "wb"))
for line in reader:
    if "Name" not in line:
        f.writerow(line)
        print line

2 个答案:

答案 0 :(得分:4)

似乎您在csv.reader

中指定了错误的分隔符(逗号)

答案 1 :(得分:2)

reader产生的每一行都是list,由您的分隔符拆分。顺便说一句,你指定为,,你确定这是你想要的分隔符吗?您的样本由制表符分隔。

无论如何,您要检查'Name'是否在给定行的任何元素中。因此,无论您的分隔符是否正确,这仍然有效:

for line in reader:
    if any('Name' in x for x in line):
        #write operation

注意区别。此版本检查每个列表元素中的'Name',您的检查列表是否'Name' in。它们在语义上不同,因为'Name' in ['blah blah Name']False

我建议先修复分隔符错误。如果您仍然遇到问题,请使用if any(...),因为完全令牌 'Name'可能不在您的列表中,但包含“名称”的内容是。

相关问题