我在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
答案 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>
<foo>embedded XML that is escaped!</foo>
</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