如果第二列与字符串匹配,我正在尝试从csv文件中删除一行。我的csv文件包含以下信息:
Name
15 Dog我希望删除其中包含"Name“的行。我使用的代码是:
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但是"Name“行没有被删除。我做错了什么?
编辑:我用错了分隔符。将其更改为\t起作用。下面是现在可以工作的代码。导入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发布于 2014-01-31 06:24:51
您似乎在csv.reader中指定了错误的分隔符(逗号
发布于 2014-01-31 06:23:29
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'’的内容在列表中。
https://stackoverflow.com/questions/21468582
复制相似问题