簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM