我正在编写一个将拼写错误引入句子的脚本。我使用python re模块用拼写错误替换原始单词。脚本如下所示:
# replacing original word by error
pattern = re.compile(r'%s' % original_word)
replace_by = r'\1' + err
modified_sentence = re.sub(pattern, replace_by, sentence, count=1)
但问题是,即使original_word是另一个单词的一部分,它也会被取代,例如:
如果我有
original_word = 'in'
err = 'il'
sentence = 'eating food in'
它会在食物中取代'in'的出现,如:
> 'eatilg food in'
我正在检查re documentation,但它没有提供有关如何包含正则表达式选项的任何示例,例如:
如果我的模式是:
regex_pattern = '\b%s\b' % original_word
这将解决问题,因为\ b代表'字边界'。但它似乎没有用。
我试图通过以下方式找到解决方法:
pattern = re.compile(r'([^\w])%s' % original_word)
但这不起作用。例如:
original_word = 'to'
err = 'vo'
sentence = 'I will go tomorrow to the'
将其替换为:
> I will go vomorrow to the
谢谢,任何帮助表示赞赏
答案 0 :(得分:2)
有关python re模块中单词边界的示例,请参阅here。看起来你很接近只需要把它们放在一起。以下脚本为您提供了所需的输出...
import re
original_word = 'to'
err = 'vo'
sentence = 'I will go tomorrow to the'
pattern = re.compile(r'\b%s\b' % re.escape(original_word))
modified_sentence = re.sub(pattern, err, sentence, count=1)
print modified_sentence
输出 - >我明天会去