此问题在此处已有答案:
(9个答案)
20天前关闭。
我有一组单词(这组单词是动态的,所以我必须使用for
循环)
a = {'i', 'the', 'at', 'it'}
我收到一条短信
text = 'i want to jump the rope. i will do it tomorrow at 5pm. i love to jump the rope.'
现在我试图从文本中删除这个词,但不知何故,它不工作。以下是我使用:
for word in a:
text = re.sub(r'\bword\b', '', text).strip()
3条答案
按热度按时间8aqjt8rx1#
你的正则表达式正在寻找字符串
"word"
,你应该使用f-string来使用存储在变量word
中的值:o2gm4chl2#
这不起作用的原因是您要查找文本字符串“word”。
这会将
word
的实际值添加到字符串中。在调试正则表达式时,记录匹配有助于检查它是否按预期工作。
更新文本,从以下内容中删除“at”:“我想跳绳。我明天下午5点就去。我喜欢跳绳。”
无
你可以看到这不是在寻找匹配,但是如果我们简化你的表达式:
更新文本,从以下内容中删除“it”:“我想跳绳。我明天下午5点就去。我喜欢跳绳。”
〈re.匹配对象;span=(35,37),匹配
这确实找到了一个匹配项,这表明在转换为正则表达式时出现了问题。
regex101对于诊断这类问题非常有用,只需打印出实际的正则表达式,并针对输入进行测试:
\b字\b
\b该\b
您可能还想整理空白,可以这样做:
想跳绳。明天下午5点行。喜欢跳绳。
7gcisfzg3#
为什么要导入一个库而不直接使用
replace()
呢?编辑
正如Seluck在下面的评论中指出的那样,这有一个缺陷。