【问题标题】:Delete the row thats being used in csv file删除 csv 文件中正在使用的行
【发布时间】:2018-08-08 16:58:30
【问题描述】:

我正在尝试删除 csv 文件中使用的行,但我不确定如何处理它。我想删除文件中使用的第一行(不包括标题。我也想使用同一个文件,而不是创建一个新文件。这是我到目前为止的内容:

if os.path.isfile('test.csv'):
    with open("test.csv", "r") as f_input:
        csv_input = csv.reader(f_input)
        next(f_input) #skips header
        for row in csv_input:
            item_c =row[0]
            item_l = row[1]
            item_v = row[2]
            item_k = row[3]
            #DELETE THE ROW AFTER I GET THE INFO FOR EACH "item"

【问题讨论】:

  • 你可能需要一个可以在写入模式下使用文件头的写入器。stackoverflow.com/questions/29725932/…
  • 也许您可以再保留一个列表并将其附加您希望保留的行,然后将这些行写入文件中。
  • 您想根据某些条件只删除一个特定的行吗?文件大还是小?
  • @mrangry777 我想删除文件中使用的第一行(不包括标题)
  • @John 编辑我的答案也包括删除具有特定索引的行的解决方案,n_list 持有这些索引

标签: python python-3.x csv


【解决方案1】:

您可以重新创建删除特定行的输入文件,然后删除原始文件。您也可以通过将整个文件读入内存然后删除一些行并重新创建它来做到这一点。然而,第二种方法风险更大。这是怎么回事:

import csv
if os.path.isfile('test.csv'):
   with open('test.csv', 'r') as inp, open('test_edited.csv', 'w') as out:
      writer = csv.writer(out)
      reader = csv.reader(inp)
      writer.writerow(next(reader)) #copy headers
      for row in reader:
            item_c = row[0]
            item_l = row[1]
            item_v = row[2]
            item_k = row[3]
            if item_k != "someValue":  #Here you put any condition you want
               writer.writerow(row)    #Save only the rows that do not have someValue

最后你可以删除原始文件

删除具有特定索引的行:

import csv
n_list = [1]
if os.path.isfile('test.csv'):
   with open('test.csv', 'r') as inp, open('test_edited.csv', 'w') as out:
      writer = csv.writer(out)
      reader = csv.reader(inp)
      writer.writerow(next(reader)) #copy headers
      index = 1
      for row in reader:
            item_c = row[0]
            item_l = row[1]
            item_v = row[2]
            item_k = row[3]
            if index not in n_list:  #Here you put any condition you want
               writer.writerow(row)    #Save only the rows that do not have someValue
            index+=1

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2015-03-19
    • 2022-01-16
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多