我正在尝试创建一个脚本,用<strong>
标记替换正文中的关键字。 <strong>keyword</strong>
问题是单词可以大写或者像dog's toy
那样标点符号(而我的目标是狗,强标记会切断's
)
我正在尝试创建一个按照描述工作的高效动态替换器。
到目前为止,这就是我所拥有的:
def strongwords(text, dict):
rc = re.compile('|'.join(map(re.escape, dict)))
def translate(match):
return dict[match.group(0)]
return rc.sub(translate, text)
除非我尽可能地创建一个巨大的dict(如上所述)并且在查找/替换上花费资源,否则我认为这不能正常工作。
使用经过验证的正则表达式配方是否有pythonic方法可以做到这一点?也许是为此设计了一个包或模块?
答案 0 :(得分:1)
可以使用re.IGNORECASE标志解决案例的第一个问题。第二个有点复杂,但可选的匹配组可以工作。
rc = re.compile("(%s)('s|re)?" % ('|'.join(map(re.escape, dict)), re.IGNORECASE)
该模式将忽略大小写并允许任何关键字以's或're为后缀(根据需要添加更多)。可选匹配组需要通过关键字匹配加回,但这应该很容易