python - 从句子列表中删除单词列表的简单方法是什么?

标签 python regex

我有一个停用词列表,我想从包含句子的列表中的每个字符串中删除这些停用词。我编写了一小段代码,用空白字符串替换任何出现的停用词,但是,显然,这会删除它出现的任何地方的字符串,即使它位于单词的中间。

# Remove stop words from sentenceList
for i in sentenceList:
    for word in stopWords:
        i = i.replace(word.rstrip("\n"), "")

我已经搜索了一段时间,但找不到明显的解决方案。

仅当字符串被空格包围或后面有句号或其他标点符号时删除字符串的最简单方法是什么?

最佳答案

您可以使用re.sub和单词边界。单词边界将确保匹配仅发生在单词字符(大致为 a 到 z、0 到 9 和下划线)和非单词字符(之前未提及的所有内容)之间。

i = re.sub(r"\b" + re.escape(word.rstrip("\n")) + r"\b", "", i)

如果您的单词中包含正则表达式元字符,我将使用 re.escape,尽管如果您的单词仅包含字母,则不太可能,但最好还是小心谨慎。

关于python - 从句子列表中删除单词列表的简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24780880/

相关文章:

regex - Notepad++ 正则表达式

python - 为什么PyGame动画闪烁

Python - 奇怪/意外的行为 - 运算符的优先级

java - Android:将字符串读取到特定字符

css - 从包含特定搜索词的 CSS 样式表中捕获所有类和 ID

regex - 正则表达式: is there a way to set maximum size of pattern?

java - 如何使用Java正则表达式来匹配这个模式?

python - 在 Pelican 支持的博客中启用搜索功能吗?

python - 在 Python 中以视觉方式绘制波形文件音频

python - Django 使用 AJAX 查看返回值