如果语句只保留字符

问题描述 投票:0回答:6

假设我们有一个列表list_a = [a,b,C,。,/,!,d,E,f,]

我想在新列表中附加字母表中的字母。

所以新列表将是list_b = [a,b,C,d,E,f]。到目前为止,我已经尝试过这样做:

list_b = []
for elements in list_a:
    try:
        if elements == str(elements):
            list_b.append(elements)
    except ValueError: #Catches the Error when the element is not a letter
        continue

但是,当我打印list_b它具有list_a的所有元素时,它不会完成我期望的工作。有任何想法吗 ?

PS:具体示例中的逗号也会带来错误。

python if-statement
6个回答
0
投票

你可以试试这个:

import string
for item in list_a:
    if item in string.ascii_letters:
        list_b.append(item)

另外,查看string模块。如果您希望使用字符串,它还有许多其他方法可以帮助您。请注意,这仅适用于ascii字符。如果你想检查字母表中的每个字符,那么你可以通过isalpha()方法,正如其他人在上面提到的那样。


3
投票

您可以使用字符串类型的.isalpha()方法。

In [1]: list_a = ['a','b','C','.','/','!','d','E','f']

In [2]: list_b = [i for i in list_a if i.isalpha()]

In [3]: list_b
Out[3]: ['a', 'b', 'C', 'd', 'E', 'f']

2
投票

尝试使用.isalpha()函数检查字符是否为字母。

list_b = []
for elements in list_a:
   if elements.isalpha():
        list_b.append(elements)

2
投票

你错过了str()函数不会返回你认为它所做的“str”元素的事实,只是它们的str表示。尝试使用字典[a-zA-Z]创建一个列表(不是非常pythonic但很容易掌握)并检查你的角色是否存在于其中。我建议从头开始编写自己的代码而不是复制/粘贴,这是真正理解问题的唯一方法....


0
投票

好吧,它基本上与使用isalpha()方法的逻辑相同,但你可以通过使用filter来做到这一点:

list_a = ['a','b','C','.','/','!','d','E','f']

list_b = list(filter(lambda i: i.isalpha(), list_a))

print(list_b)

输出:

['a', 'b', 'C', 'd', 'E', 'f']

-2
投票

您可以使用stringre包来执行此操作

import re
new_list = [c for c in old_list if re.match(r'[a-zA-Z]', c)]

或者与string

import string
new_list = [c for c in old_list if c in string.ascii_letters]
© www.soinside.com 2019 - 2024. All rights reserved.