我想在处理 csv 文件时删除行。 我的文件:
Sr,Name1,Name2,Name3
1,Zname1,Zname2,Zname3
2,Yname1,Yname2,Yname3
3,Xname1,Xname2,Xname3
我想逐行读取并删除已处理的行。 所以文件现在是:
2,Yname1,Yname2,Yname3
3,Xname1,Xname2,Xname3
其他问题提供的解决方案是:
next()
或任何其他方式跳过该行并将剩余行写入更新的文件中我想从原始文件中删除在
.reader()
方法中输入的行
我的代码:
with open("file.txt", "r") as file
reader = csv.reader(file)
for row in reader:
#process the row
#delete the row
我无法弄清楚如何删除/删除该行。
我希望更改是在原来的
file.txt
中,因为我将多次运行该程序,因此每次运行时,file.txt
都已经存在,并且程序将从上次结束的位置开始。
只需将内存中的 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)
您可以像这样删除列:
我们可以使用 panda pop() 方法通过将列命名为参数来从 CSV 中删除列。
pop()
功能从 CSV 文件中移除或删除行或列。您可能可以在这里找到灵感:如何删除文件中的特定行?.
并且不要忘记打开文件时授予写入权限。
由于pandas包处理大数据,所以在基础Python中没有解决方案。 您必须导入 pandas。
import pandas
df=pandas.read_csv("file_name.txt")
df.set_value(0,"Name3",new_value)
df.to_csv("file_name.txt", index=False)
此代码编辑第 0 行 Name3 列中的单元格。第 0 行是标题下方的第一行。因此,Zname3 将更改为其他内容。您可以类似地删除一行或一个单元格。
我还没有尝试过这段代码,但它应该以所需的方式工作。