我已经尝试了几天了。我必须在包含动物园动物的文件中阅读。 (即['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
这是我目前的代码无法做到的
答案 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)
。我不知道为什么那样。