python - Python - 仅从句子中删除单词
问题描述
我试图从一个句子中删除一个特定的词,即“你”。代码如下:
out1.text_condition = out1.text_condition.replace('you','')
这可行,但是,它也会从包含它的单词中删除它,所以当“你的”出现时,它会从其中删除“你”,留下“r”。谁能帮我弄清楚我能做些什么来删除这个词,而不是另一个字符串中的字母?
谢谢!
解决方案
为了替换整个单词而不是子字符串,您应该使用正则表达式 (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
推荐阅读
- html - 为什么用 CSS "width: x%" 调整图像大小不会改变图像占用的空间?
- flutter - 我如何在颤振 video_player 上使用编码的视频流 url 清单
- c# - 使用 Xamarin Forms 规划交互式 SVG
- .net - AWS Glacier 的 Django 与 .Net
- python - 将小于 2 位的数值的前导零添加到现有数据框列(python)
- html - 如何在 select2 框上应用边框半径?
- sql - 在多个日期之间的天数上生成行,计算每个日期之间的天数,以及第一个和最后一个日期
- javascript - 如何在 JavaScript 中单击带有扩展名的按钮
- list - Flutter Firebase where query arrayContains in List
- r - 如何读入大量与个人 ID 号码匹配的 csvs R