当我在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中没有像“删除”或“删除”这样的属性。
我该如何编写允许删除少量数据的功能?
答案 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)