簡體   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