我想从文本中获取所有单词,包括unicode字符,不包括连字符或下划线或任何其他非字母数字字符。
即。我想要这样的东西:
>>> 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 :(得分:1)
在这种情况下,您可以使用str.isalnum()
代替RegEx:
getWords = lambda x: ''.join(i if i.isalnum() else ' ' for i in x).split()