2016-01-09 71 views
-1

我想從文本中獲取所有單詞,包括unicode字符,不包括連字符或下劃線或任何其他非字母數字字符。如何匹配python regexp中的字母數字字符?

I.e.我想是這樣的:

>>> getWords('John eats apple_pie') 
['John', 'eats', 'apple', 'pie'] 
>>> getWords(u'André eats apple-pie') 
[u'André', u'eats', u'apple', u'pie'] 

隨着

getWords = lambda text: re.compile(r'[A-Za-z0-9]+').findall(text) 

它適用於第一個例子,而不是第二,和周圍的其他方法與此:

getWords = lambda text: re.compile(r'\w+', re.UNICODE).findall(text) 
+0

按空格拆分字符串。簡單。 :) – Tushar

+0

@Tushar和'_'和'-'? – jonrsharpe

+0

你在發佈之前發佈了這個消息嗎? – jonrsharpe

回答

1

你可以在這種情況下使用str.isalnum()代替RegEx:

getWords = lambda x: ''.join(i if i.isalnum() else ' ' for i in x).split() 
+0

哦,是的,如果你不認爲數字或其他東西是詞的一部分,請使用'str.isalnum'。 –