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

#python

Вопрос:

Как мне удалить определенную строку в текстовом файле, основанную на вводе пользователя?

 def remove():
    delete_value = input("Enter the value you wish to delete: ")

    with open("values.txt", "r") as f:
        lines = f.readlines()
    with open("values.txt", "w") as f:
        for line in lines:
            if line.strip("n") != delete_animal:
                 f.write(line)
 

Любая помощь приветствуется, спасибо!

Комментарии:

1. Исключением в этом случае является то, что если пользователь введет животное, которого там нет, что произойдет?

Ответ №1:

 def remove():
    delete_value = input("Enter the value you wish to delete: ")

    with open("value.txt", "r") as f:
        file = f.readlines()
    with open("value.txt", "w") as f:
        for line in file:
            # we will skip the line that contains our target word
            # in this case the delete_animal
            words = line.strip("n").lower().split(' ')
            if delete_value.lower() not in words:
                f.write(line)
 

Входной файл:

 line 1
line 2
line 3
line 4
may name is sudipto
my name is sudiptoandiloveprogramming

user input: sudipto
 

Выходной файл после удаления:

 line 1
line 2
line 3
line 4
my name is sudiptoandiloveprogramming
 

Комментарии:

1. По какой-то причине строки, которые были удалены, были 1, 2, 6, 7 и 9, когда я использовал это? Я также пытаюсь получить «имя» животного в качестве строкового ввода, чтобы удалить его, а не нумерованную строку, поскольку это неизвестная информация для пользователя.

2. многие другие строки удаляются при использовании этого

3. Эй, если у вас есть Tarantula в файле, вам нужно ввести Tarantula , чтобы удалить строку. Код не был нечувствителен к регистру. Однако теперь я добавил нечувствительность к регистру. Попробуйте еще раз.

Ответ №2:

Попробуйте это —

 def remove():
    num = []
   
    delete_animal = input("Enter the name of the animal you wish to delete: ")
    file = open("txt file", "r")
    file.seek(0)
    list_of_lines = file.readlines()
    file.seek(0)
    lines = file.read().splitlines()
    file.close()
    if delete_animal not in lines:
        print("That line does not exist, please try again")
   

    for word in lines:
        num.append(0)
    
    if delete_animal == word:
        file = open('txt file','w')
        list_of_lines[len(num)-1] = ""
        file.writelines(list_of_lines)
        print('Animal Deleted')
 

Это должно удалить строку, в которой находится входное животное

РЕДАКТИРОВАТЬ
Так и должно быть A3_s3902169_stock.txt . Вам нужно добавить это расширение .txt

Комментарии:

1. Я боюсь, что код все еще не удаляет строку «Тарантул»