如果第二列与字符串匹配,我试图从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 csvreader = 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
答案 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'
可能不在您的列表中,但包含“名称”的内容是。