首页 > 解决方案 > Python - 仅从句子中删除单词

问题描述

我试图从一个句子中删除一个特定的词,即“你”。代码如下:

out1.text_condition = out1.text_condition.replace('you','')

这可行,但是,它也会从包含它的单词中删除它,所以当“你的”出现时,它会从其中删除“你”,留下“r”。谁能帮我弄清楚我能做些什么来删除这个词,而不是另一个字符串中的字母?

谢谢!

标签: pythonstringreplacestr-replace

解决方案


为了替换整个单词而不是子字符串,您应该使用正则表达式 (regex)。

以下是如何用模块替换整个单词re

import re

def replace_whole_word_from_string(word, string, replacement=""):
    regular_expression = rf"\b{word}\b"
    return re.sub(regular_expression, replacement, string)

string = "you you ,you your"

result = replace_whole_word_from_string("you", string)

print(result)

输出:

  , your

解释:

这两者\b就是我们所说的“词界”。优点str.replace是它也会考虑标点符号。

为了创建正则表达式,这里我们使用文字字符串插值(也称为“f-strings”,https://www.python.org/dev/peps/pep-0498/)。

要创建“f-string”,我们添加前缀f

我们还使用前缀r,以创建“原始字符串”。我们使用原始字符串以避免在\b.

如果没有前缀r,我们会写regular_expression = f"\\b{word}\\b".

如果你使用过string.replace(' you ', ' '),你会收到这个(错误的)输出:

you ,you your

推荐阅读