如果语句只保留字符

时间:2018-02-28 19:05:24

标签: python if-statement

假设我们有一个列表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:具体示例中的逗号也会带来错误。

6 个答案:

答案 0 :(得分: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']

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

你可以试试这个:

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

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

答案 4 :(得分: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']

答案 5 :(得分:-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]