使用 Python CSV 删除 CSV 中的行的最简单方法是什么?



我找不到使用 CSV 模块(不是熊猫,因为它需要安装(从 CSV 中删除选择行的清晰简洁的方法。我还想分别删除一系列行。我在国外看到的每一篇文章和每个问题都根本不清楚,往往包含人们正在询问的特定逻辑。我只是想要一个非常简单的明确答案。

我想使用 argv 提供文件名、开始行号和结束行号。所以像python这样的东西 Script.py/CSVfile.csv 1 5,意思是文件名并删除第1行到第5行(开头和结尾(。我是 Python 脚本的新手,我完成了一半,但总有一些逻辑与我需要做的事情无关。我只是不断被阻止(就像我通常在尝试编码时所做的那样(,任何帮助都值得赞赏。

import csv
import sys
var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]
with open (var1, 'w') as file1:
   reader = csv.reader(file1)
   for line in reader:
      file1.writer()

只需枚举这些行,如果它们的索引在您要排除的范围内,则不要复制它们:

import csv
import sys
var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]
with open (var1, 'r') as file1:
   reader = csv.reader(file1)
   for i, line in enumerate(reader):
      if (i < var2) or (i > var3):
          # process line...

如果要就地过滤文件,请将所选行写入临时文件,最后将新文件重命名为旧名称,但此处没有正当理由解析行

import sys
import tempfile
var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]
(file2, name2) = tmpfile.msktemp()     # get a temporary file
try:
    with open (var1, 'r') as file1:
       for i, line in enumerate(file1):
          if (i < var2) or (i > var3):   # copy selected lines to temp file
              dummy = file2.write(line)
    file2.close()
except:
    remove(name2) # error: remove tempfile
    file2 = None
if file2 is not None:      # successful copy: rename to initial name
    remove(var1)
    rename(name2, var1)

类似的问题

在这里
with open("foo.txt", "r+") as f:
     old = f.read() # read everything in the file
     f.seek(0) # rewind
     f.write("new linen" + old) # write the new line before

使用"查找"转到行号,然后添加""或其他任何内容。

最新更新