Python只保留列表中的字母数字单词

Python只保留列表中的字母数字单词,python,list,Python,List,我有一个类似下面的单词列表 mylist=["hi", "h_ello", "how're", "you", "@list"] 我想拉出所有非字母数字字符,给出如下结果: "h_ello", "how're", "@list" 请注意,在现实生活中,我有一个更长的列表,其中包含一些非字母数字的实例,如~,?,>,=,+等 请问有人知道怎么做吗? 谢谢使用str.isalpha() Ex: mylist=["hi", "h_ello", "how'r

我有一个类似下面的单词列表

    mylist=["hi", "h_ello", "how're", "you", "@list"]
我想拉出所有非字母数字字符,给出如下结果:

                  "h_ello", "how're", "@list"
请注意,在现实生活中,我有一个更长的列表,其中包含一些非字母数字的实例,如~,?,>,=,+等

请问有人知道怎么做吗? 谢谢

使用
str.isalpha()

Ex:

mylist=["hi", "h_ello", "how're", "you", "@list"]
print([i for i in mylist if not i.isalpha()])
['h_ello', "how're", '@list']
输出:

mylist=["hi", "h_ello", "how're", "you", "@list"]
print([i for i in mylist if not i.isalpha()])
['h_ello', "how're", '@list']

您可以将
列表理解
isalnum()
函数结合使用

mylist=["hi", "h_ello", "how're", "you", "@list"]
print([i for i in mylist if not i.isalnum()])
输出

['h_ello', "how're", '@list']
发件人:

str.isalnum()
如果字符串中的所有字符均为 字母数字,并且至少有一个字符,否则为false。A. 如果以下其中一项返回True,则字符c为字母数字:
c.isalpha()
c.isdecimal()
c.isdigit()
,或
c.isnumeric()


您还可以将
过滤器
re
一起使用:

import re
mylist=["hi", "h_ello", "how're", "you", "@list"]
new_list = list(filter(lambda x:re.findall('[\W_]', x), mylist))
输出:

['h_ello', "how're", '@list']

最好选择isalnum或regex,这里我尝试了一些不同的方法只是为了好玩,这不是为了生产代码,这需要时间,我只是尝试向您展示一种不同的方法:

import unicodedata
import sys

mylist = ["hi", "h_ello", "how're", "you", "@list"]


def translate(text_):
    pun=[i for i in range(sys.maxunicode) if unicodedata.category(chr(i)).startswith('P')]

    if True in [True if ord(i) in pun else False for i in text_ ]:
        return text_


print(list(filter(lambda x:x,[translate(i) for i in mylist])))
输出:

['h_ello', "how're", '@list']

太神了非常感谢。我想这会复杂得多——如果这是一个愚蠢的问题,请道歉——谢谢@Fern_2018,您也可以像在我的回答中一样使用
isalnum
方法。@Rakesh,
'a1'。isalpha()
将使用
isalpha
方法返回
False
。@MihaiAlexandru Ionut。根据OP的示例,只需要alpha字符。如果OP需要alpha+数字,则
isalpha
为useful@Rakesh,否,因为
'a1'.isalpha()
将返回
False
,它是字母数字的