首页 > 解决方案 > 如何使用用户输入从文件中删除内容

问题描述

我创建了一个包含内容的文件。问题是我知道如何添加内容,append但我不知道如何使用用户输入从文件中删除内容。

代码是,results变量是字典:

    while True:
    remover = int(input("What results do you want to remove "))

    for line in enumerate(results, start = 1):
        line.remove(remover)
        print("{}".format(remover) + " is removed")

将不胜感激一些帮助

标签: pythonfile

解决方案


这似乎很适合列表理解。

假设 results 是所有当前结果的列表请看下面的例子:

while True:
    remover = input("What results do you want to remove ")
    results = [line for line in results if line != remover]
    print("{}".format(remover) + " is removed")
    print("List currently has the following elements {}".format(results)

在下面的示例中,对于循环的每次迭代:

  • 要求用户输入要删除的内容
  • 通过使用列表推导创建一个新列表并将其放入“结果”中,该列表推导式从与“remover”中的任何内容不匹配的元素中创建一个新列表
  • 将显示一条消息,说明已删除的内容以及打印当前列表的另一条消息

有关列表推导如何工作的更多信息,请参阅:https ://www.pythonforbeginners.com/basics/list-comprehensions-in-python


但是,如果您只想让示例正常工作,则可以将其重构为:

while True:
remover = int(input("What results do you want to remove "))

    for line in results:
        if line == remover:
            results.remove(remover)
            print("{}".format(remover) + " is removed")

我在这里改变了什么:

  1. 我已经将你的 for 语句移到了 while 块中,因为我假设每次迭代都希望发生这种情况(为什么 while 在那里),另外因为你使用了 while(true) 你永远不会执行 for 块
  2. 我已经更改了 foreach 的 for 语句,因为这大大简化了事情。

请注意,如果您使用的不是整数列表,而是字符串,则需要删除类型转换为 int


推荐阅读