[英]Delete rows from csv file using function in Python
def usunPsa(self, ImiePsa):
with open('schronisko.csv', 'rb') as input, open('schronisko.csv', 'wb') as output:
writer = csv.writer(output)
for row in csv.reader(input):
if row[0] == ImiePsa:
writer.writerow(row)
with open(self.plik, 'r') as f:
print(f.read())
Dsac;Chart;2;2020-11-04
Dsac;Chart;3;2020-11-04
Dsac;Chart;4;2020-11-04
Lala;Chart;4;2020-11-04
Sda;Chart;4;2020-11-04
Sda;X;4;2020-11-04
Sda;Y;4;2020-11-04
pawel;Y;4;2020-11-04`
If I use usunPsa("pawel") every line gets removed.
下面的代碼是我的整個 csv 文件,而不是只有一行給定的 ImiePsa,那里可能有什么問題?
我發現了問題。 代碼中的 row[0] 返回整行,這意味着這些行沒有正確解析。 經過一番閱讀,我發現 csv.reader 有一個名為 delimiter 的參數來分隔列之間的分隔符。
添加該參數可以解決您的問題,但並非所有問題。 對我有用的代碼(以防萬一你仍然想使用你的原始代碼)
import csv
def usunPsa(ImiePsa):
with open('asd.csv', 'rb') as input, open('schronisko.csv', 'wb') as output:
writer = csv.writer(output)
for row in csv.reader(input, delimiter=';'):
if row[0] == ImiePsa:
writer.writerow(row)
usunPsa("pawel")
請注意,我更改了輸出文件名。 但是,如果您想保持文件名相同,則必須使用 Hamza Malik 的答案。
只需將內存中的 csv 文件作為列表讀取,然后編輯該列表,然后將其寫回 csv 文件。
lines = list()
members= input("Please enter a member's name to be deleted.")
with open('mycsv.csv', 'r') as readFile:
reader = csv.reader(readFile)
for row in reader:
lines.append(row)
for field in row:
if field == members:
lines.remove(row)
with open('mycsv.csv', 'w') as writeFile:
writer = csv.writer(writeFile)
writer.writerows(lines)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.