Python接受用户输入并从列表中删除该输入

时间:2015-04-03 01:27:59

标签: python list python-3.x

我已经尝试了几天了。我必须在包含动物园动物的文件中阅读。 (即['ID','Name','Species'])接下来,必须接受用户的ID选择并从列表中删除。这是我到目前为止。我被困住了,在本节完成之前无法继续进行。我感谢任何评论。也使用python 3。

f = open('ZooAnimals.txt', 'r') #read in file
file = [line.split(',') for line in f.readlines()] #turn file into list
c = input("What ID would you like to delete? ") #accept user input
file1 = list(c)#turn user input into a list item
list.pop(file1) #suppose to pop out the value
print(file)

编辑:

该文件包含以下项目。 [['1','Whiskers','Siberian Tiger \ n'],['2','Babbity','Belgian Hare \ n'],['3','Hank','Spotted Python \ n' ],['17','拉里','狮子\ n'],['10','Magilla','东部大猩猩\'',['1494','吉姆','Grizzy Bear \ n' ]

我想尝试删除例如ID 2,Babbity,Belgian Hare

这是我目前的代码无法做到的

2 个答案:

答案 0 :(得分:4)

list.pop接受index作为参数。对于列表,这只能是整数。另外,list('abc') != ["abc"],而不是["a", "b", "c"],因为str的迭代协议(它是逐字的)。

with open("ZooAnimals.txt") as zoo_animals_txt:
    # [("123", "cat", "felis catus"), ...]
    animals = [line.split(",") for line in zoo_animals_txt]

user_input = input("What ID would you like to delete? ")

for index, (id_, name, species) in enumerate(animals):
    if id_ == user_input:
        animals.pop(index)
        break

print("The remaining animals are:")
print(*animals, sep="\n")

然后,使用更改来更新文件:

with open("ZooAnimals.txt", "w") as zoo_animals_txt:
    for animal_stats in animals:
        print(",".join(animal_stats), file=zoo_animals_txt)

答案 1 :(得分:0)

list.pop()删除列表的最后一个元素。你可能想要file.remove(c)。另外,请删除file1 = list(c)。我不知道为什么那样。