【发布时间】:2017-02-27 19:33:35
【问题描述】:
我在 python 中有一个列表,其中包含许多不同的字符,例如空格、|、>、数字和小写字母,但我只想保留一些大写字母(A、B、C、D)。如果我尝试这个,它不起作用,我几乎得到了想要的列表,但不仅 A、B、C、D 仍然存在。
with open("text.mfa") as f:
content = f.read()
mylist = list(content)
letters = ['A','B','C','D']
i = 0
while i < (len(mylist)-1)
if mylist[i] != letters[0] or letters[1] or letters[2] or letters[3]
mylist.remove(mylist[i])
i+=1
【问题讨论】:
-
您与
or的比较是错误的。在每个or之后复制第一个测试 -
另外,使用 for 循环,并且在迭代列表时不要修改列表。
-
你也可以
import string然后使用if mylist[i] not in set(string.ascii_uppercase):但是你在迭代期间修改了一个列表,这会导致问题,例如我假设您将使用此代码访问IndexError。只需构建一个不同的列表,其中只包含您确实想要的字符。 -
i+=1应该在else中,如果你沿着这条路走。
标签: python