删除 csv 文件中的行或单元格

问题描述 投票:0回答:3

我想在处理 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

其他问题提供的解决方案是:

  1. 读取文件
  2. 使用
    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
都已经存在,并且程序将从上次结束的位置开始。

python csv
3个回答
2
投票

只需将内存中的 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 中删除列。

  • 进口熊猫。
  • 读取 CSV 文件。
  • 使用
    pop()
    功能从 CSV 文件中移除或删除行或列。
  • 打印数据。

0
投票

您可能可以在这里找到灵感:如何删除文件中的特定行?.

并且不要忘记打开文件时授予写入权限。


0
投票

由于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 将更改为其他内容。您可以类似地删除一行或一个单元格。

我还没有尝试过这段代码,但它应该以所需的方式工作。

© www.soinside.com 2019 - 2024. All rights reserved.