如何修复此python正则表达式中的这个错误,以删除单词列表中不需要的单词? (串)

时间:2014-04-09 06:32:11

标签: python regex

我从StackOverflow获得了一个用于删除停用词的正则表达式:

def killStopWords(stringsList):
        pattern = re.compile("\\b(a|y|o|un|una|unas|unos|que|k|d|el|la|los|les|las|pq|xq|en|como|me|con|de)\\W", re.I)
        return [pattern.sub("", aString) for aString in stringsList]

但是我注意到它在某些情况下无法正常工作,例如:

test = killStopWords(['alegría es un amor', 'la papelería afición con ilusión'])

for k in test:
    print k

将打印:

alegríes amor
papeleríafición ilusión

alegría, es, amor, papelería, afición, ilusión

应该

看起来它删除了包含重音符号

的字符

2 个答案:

答案 0 :(得分:2)

看起来你想要将整个单词与你的模式匹配而不是单词的一部分是否正确?

如果是这样,那么您可以使用以'字边界开头和结尾的模式'即\ b。

类似的东西:

pattern = re.compile(r'\b(un|una)\b')

答案 1 :(得分:0)

剥离空格,加入,

print ", ".join(k.strip() for k in (l.split() for l in test))