繁体   English   中英

就地删除CSV的某些行

[英]Delete some rows of a CSV, in-place

这个:

import csv
with open('original.csv', 'rb') as inp, open('new.csv', 'wb') as out:
    writer = csv.writer(out)
    for row in csv.reader(inp):
        if row[2] != "0":
            writer.writerow(row)
os.remove('original.csv')
os.rename('new.csv', 'original.csv')

允许删除CSV的某些行。

还有一种更Python的方式就地删除CSV文件的某些行吗? (而不是创建文件,删除原始文件,重命名等)

没有更Python化的方法:您不能删除文件中间的内容。 用所需的内容写出一个新文件,然后重命名。

我注意到即使您正在使用它,您的代码也不会导入os模块。 无论如何,这是一种无需使用该模块即可执行所需操作的方法。

这将首先以读取模式打开以获取数据,然后以写入模式覆盖。 请注意,您需要将csv.reader(f)语句传递给list()函数,否则data变量将仅指向CSV文件的内存地址,并且一次将无法对内容执行任何操作它是关闭的。 list()实际上会为您复制信息。

import csv

with open("original.csv", "rb") as f:
    data = list(csv.reader(f))

with open("original.csv", "wb") as f:
    writer = csv.writer(f)
    for row in data:
        if row[2] != "0":
            writer.writerow(row)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM