所以我想要做的是用
"<b>keyword</b>"
一个更大的字符串替换一个字符串“关键字”。
例子:
myString = "你好。你应该提高那个人的职位。你好,你好。"
关键字=“嗨”
我想要的结果是:
result = "<b>HI</b> there. You should higher that person for the job.
<b>Hi</b> <b>hi</b>."
在用户键入关键字之前,我不会知道关键字是什么,并且在运行查询之前不会知道语料库(myString)。
我找到了一个大部分时间都有效的解决方案,但有一些误报,
namely it would return "<b>hi<b/>gher"
这不是我想要的。另请注意,我试图保留原始文本的大小写,并且无论大小写如何都应该进行匹配。所以如果关键字是“hi”它应该替换
HI with <b>HI</b> and hi with <b>hi</b>.
我最接近的是使用这个稍微派生的版本: http ://code.activestate.com/recipes/576715/ 但我仍然无法弄清楚如何对字符串进行第二次传递以修复所有错误上面提到的积极因素。
或者使用 NLTK 的 WordPunctTokenizer(它简化了标点符号之类的一些事情),但我不确定如何将句子重新组合在一起,因为它没有反向功能并且我想保留 myString 的原始标点符号。本质上,连接所有标记不会返回原始字符串。例如,如果原始文本具有“7-7”,则在将标记重新组合为其原始文本时,我不想将“7-7”替换为“7-7”。
希望这已经足够清楚了。似乎是一个简单的问题,但结果却比我想象的要困难一些。