Python CSV文件-如何从CSV文件中删除数据?

时间:2018-09-22 08:30:01

标签: python python-3.x csv

当我在Python中练习CSV文件知识时遇到问题。我写了一些功能,例如从CSV文件读取,将新数据添加到现有CSV文件中,现在我想添加允许用户从CSV文件中删除一些数据的功能。我添加新数据的功能如下:

def writein():
    with open('employee data.csv', 'a') as employeeData:
        writeby = csv.writer(employeeData, delimiter = ',')
        writeNEN = input('Enter the name of the new employee: \n')
        writeNESN = input('Enter the surname of the new employee: \n')
        writeNEP = input('Enter the position of the new employee: \n')
        writeNEBD = input('Enter the date of birth of the new employee: \n')
        writeby.writerow([writeNEN, writeNESN, writeNEP, writeNEBD])

现在,我想执行相同的功能,但不想添加,而是要删除现有数据。我尝试过这个:

def dataremove():
    with open('employee data.csv', 'r') as employeeData:
        removewith = csv.remover(employeeData, delimiter = ',')

但是csv modul中没有像“删除”或“删除”这样的属性。

我该如何编写允许删除少量数据的功能?

2 个答案:

答案 0 :(得分:0)

通常,没有从计算机文件中“删除”数据的事情。您只能删除整个文件,截断文件以从末尾删除一些内容,或者读取旧内容,在内存中进行编辑并将其写入新文件。

执行所需操作最简单的方法是使用csv.reader加载数据,根据需要进行编辑,然后像现在一样使用csv.writer

答案 1 :(得分:0)

要删除某些行,您应该阅读所有文件,删除不需要的行(例如,您可以使用filter在行列表中执行此操作),然后重写所有csv文件。
我建议您使用pandas库来执行此操作,这样做可能有点过头,但是简化了此操作

import pandas as pd
def writein():
        df = pd.read_csv('employee data.csv')
        writeNEN = input('Enter the name of the new employee: \n')
        writeNESN = input('Enter the surname of the new employee: \n')
        writeNEP = input('Enter the position of the new employee: \n')
        writeNEBD = input('Enter the date of birth of the new employee: \n')
        df.append([writeNEN, writeNESN, writeNEP, writeNEBD])
        df.to_csv('employee data.csv', index=False)

def delete():
        df = pd.read_csv('employee data.csv')
        df = df[~df.name.str.startswith('N')] #keep the names that don't start with N
        df.to_csv('employee data.csv', index=False)