Python只从lis中删除字母表元素

2024-09-29 23:31:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常混乱的数据,我试图删除的元素,包含字母或单词。我试图捕捉有字母数字和数字值的元素。我试过了。isalpha(),但没用。如何删除此项?你知道吗

lista = ['A8817-2938-228','12421','12323-12928-A','12323-12928',
             '-','A','YDDEWE','hello','world','testing_purpose','testing purpose',
        'A8232-2938-228','N7261-8271']
lista

已尝试:

[i.isalnum() for i in lista] # gives boolean, but opposite of what I need. 

输出:

['A8817-2938-228','12421','12323-12928-A','12323-12928','-','A8232-2938-228','N7261-8271']

谢谢!你知道吗


Tags: 数据元素helloworld字母数字单词testing
3条回答

似乎您可以测试至少一个字符是数字'-'相等:

res = [i for i in lista if any(ch.isdigit() for ch in i) or i == '-']

print(res)

['A8817-2938-228', '12421', '12323-12928-A', '12323-12928',
 '-', 'A8232-2938-228', 'N7261-8271']

列表中的数据类型是什么?你知道吗

您可以尝试这样做:

[str(i).isalnum() for i in lista] 

您可以在列表理解中添加条件检查,因此这就是您想要的:

new_list = [i for i in lista if not i.isalnum()]
print(new_list)

输出:

['A8817-2938-228', '12323-12928-A', '12323-12928', '-', 'testing_purpose', 'testing purpose', 'A8232-2938-228', 'N7261-8271']

注意,如果字符串包含空格或下划线,isalnum不会说True。一种方法是在检查之前删除它们:(您还需要使用isalpha而不是isalnum

new_list_2 = [i for i in lista if not i.replace(" ", "").replace("_", "").isalpha()]
print(new_list_2)

输出:

['A8817-2938-228', '12421', '12323-12928-A', '12323-12928', '-', 'A8232-2938-228', 'N7261-8271']

相关问题 更多 >

    热门问题