【问题标题】:Python - Remove word only from within a sentencePython - 仅从句子中删除单词
【发布时间】:2021-08-20 17:16:37
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

  • 也许在“你”前后留出空间
  • 使用回复:re.sub(r'\byou\b', '', out1.text_condition)
  • Here 是 It_is_Chris 的正则表达式的一个例子

标签: python string replace str-replace


【解决方案1】:

为了替换整个单词而不是子字符串,您应该使用正则表达式(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 相比的优势在于它也会考虑标点符号。

为了创建正则表达式,这里我们使用 Literal String Interpolation(也称为“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

【讨论】:

    【解决方案2】:

    一个非常简单的解决方案是将单词周围的空格替换为一个空格:

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

    但请注意,它不会删除例如you.(在句末)或you,等。

    【讨论】:

    • 哇!甚至没有想到这一点。非常感谢
    • 我认为标点符号问题的一个奇怪解决方案是在删除“你”时以某种方式删除标点符号,然后以某种方式将其添加回末尾,或者将标点符号识别为空格。
    • 正则表达式可能是最好的方法
    【解决方案3】:

    最简单的方法可能就是假设单词前后有空格:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多