darryl wong Ответов: 1

Как удалить определенную строку из csv-файла на основе пользовательского ввода?


Я выполняю школьное задание и создал функцию удаления, чтобы удалить строку из csv-файла.
Но он не соответствует моему пользовательскому вводу и удаляет конкретную строку. Он просто очищает файл, как только я ввожу идентификатор. Я не уверен, что это правильный способ сделать это, надеюсь, что смогу найти здесь какую-то помощь.

Это функция, которую я создал.
def d_avatar():
    filePath = "data.csv"
    with open(filePath)	as csvfile:
        reader = csv.DictReader(csvfile)
        
        filePath = "sample_write_data.csv"
        with open(filePath,'w',newline='') as csvfile:
            fieldnames = ['name','tribe','id','Air','Water','Earth','Fire']
            writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
        
            print("Delete an avatar")
            deletion = input("Enter avatar id to delete: ")
            
        for row in reader:
            if deletion != row['id']:
                print("avatar ID is not found")
                deletion = input("Enter avatar id to delete: ") 
            
            else:
                if deletion == row['id' ]:
                    writer.writerow(row) ; 

                print("Avatar Record Deleted")


Что я уже пробовал:

Я пытался использовать различные способы удаления данных с помощью del и writerow, но все это дает мне один и тот же результат очистки файла.

1 Ответов

Рейтинг:
4

Richard MacCutchan

Ваша логика удаления нуждается в изменении. Попробовать это:

for row in reader:
    if deletion != row['id']:
        writer.writerow(row) ; # write all non-matching rows
    else:
        print("Avatar Record Deleted") # nothing to write


Maciej Los

5ed!

Richard MacCutchan

Спасибо Мацей. У меня такое впечатление, что =, ==, и != причиной путаницы для некоторых современных игр.