簡體   English   中英

Python僅從列表中刪除字母元素

[英]Python remove only alphabet elements from a list

我的數據非常混亂,我正在嘗試刪除包含字母或單詞的元素。 我正在嘗試捕獲具有字母數字和數字值的元素。 我嘗試了.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']

謝謝!

您可以在列表推導中添加條件檢查,因此您需要這樣做:

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']

列表中的數據類型是什么?

您可以嘗試這樣做:

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

看來您可以測試至少一個字符是數字'-'相等的字符:

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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM