删除python列表中的所有字符,除了一些大写字母

时间:2017-02-27 19:33:36

标签: 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

5 个答案:

答案 0 :(得分:2)

更多Pythonic方式可能是使用列表推导和in运算符:

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

答案 1 :(得分:0)

让我们来看看你的if语句:

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

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

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

每个字符的计算结果为True,这意味着因为字母[1]等评估为true,所以总是将整个表达式计算为True。

答案 2 :(得分:0)

使用<item> &lt;foo&gt;embedded XML that is escaped!&lt;/foo&gt; </item> 代替in(检查元素是否在列表中)。

or

答案 3 :(得分:0)

尝试使用过滤器。

ShoppingCartEntity

答案 4 :(得分:0)

您可以使用for循环而不是while循环,因为for循环遍历一定数量的值。要检查单词是否是字母,您可以这样做:

with open("text.mfa") as f:
     mylist = list(f.read())
mynewlist = []
letters = ['A','B','C','D']
for word in mylist:
      if word not in letters: #if word is not in letters
            mynewlist.append(word) #adds the word to a new list