从python列表中删除除某些capi之外的所有字符

2024-04-28 04:30:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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

Tags: ortextgtmfa列表with数字open
3条回答

让我们看看你的if语句:

if mylist[i] != letters[0] or letters[1] or letters[2] or letters[3]

如果放在括号内,python将其处理为:

^{pr2}$

每个字符的求值结果都为True,这意味着因为字母[1]等的求值结果为True,所以您始终将整个表达式求值为True。在

更具python风格的方法可能是使用列表理解和in运算符:

mylist = [x for x in content if x in letters]

尝试使用过滤器。在

myfilteredlist = list(filter(lambda s: s in letters, mylist))

相关问题 更多 >