[英]Remove a specific row in a csv file with python
如果第二列與字符串匹配,我正在嘗試從 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 有效。 下面是現在有效的代碼。 導入 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
似乎您在 csv.reader 中指定了錯誤的分隔符(逗號)
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'
可能不在您的列表中,但包含 'Name' 的東西在列表中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.