我有一个类似于以下内容的词汇列表
>>>x = np.arange(9.).reshape(3, 3)
>>>x
array([[ 0., 1., 2.],
[ 3., 4., 5.],
[ 6., 7., 8.]])
>>>np.where( x > 5 )
(array([2, 2, 2]), array([0, 1, 2]))
我想提取所有非字母数字字符以得到如下结果:
mylist=["hi", "h_ello", "how're", "you", "@list"]
请注意我在现实生活中有一个更长的列表,它包含一些非字母数字实例,如〜,?,>,=,+等。
有谁知道怎么做,拜托? 谢谢
答案 0 :(得分:2)
使用str.isalpha()
<强>实施例强>
mylist=["hi", "h_ello", "how're", "you", "@list"]
print([i for i in mylist if not i.isalpha()])
<强>输出:强>
['h_ello', "how're", '@list']
答案 1 :(得分:1)
您可以将list comprehension
与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()
如果字符串中的所有字符都是,则返回true 字母数字,至少有一个字符,否则为false。一个 如果下面的一个返回True,则字符c是字母数字:c.isalpha()
,c.isdecimal()
,c.isdigit()
或c.isnumeric()
。
答案 2 :(得分:0)
您还可以将filter
与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']
答案 3 :(得分:0)
最好你去isalnum或正则表达式,在这里我尝试了一个不同的方法只是为了好玩,这不是生产代码,它需要时间,我只是试图向你展示一个不同的方式:
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']