假设我们有一个列表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:具体示例中的逗号也会带来错误。
答案 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)
您可以使用string
或re
包来执行此操作
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]