2016-01-09 49 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'。 –