这是这个previous question的一个扩展
我有一本python字典,是这样做的
a = {"animal": [ "dog", "cat", "dog and cat"], "XXX": ["I've been", "asp*", ":)"]}
我想找到一个解决方案,用它们的键尽可能快地替换字典值中的所有单词。解决方案对于大文本应该是可伸缩的。如果单词以星号结尾,则意味着文本中以该前缀开头的所有单词都应替换
所以下面这句话“我一直很坏,但我渴望成为一个更好的人,像我的狗和猫一样:)”应该转化为“XXX坏,但我XXX做一个更好的人,像我的动物XXX”
我正在尝试使用trrex来实现这一点,认为它应该是最快的选择。它是?但是我不能成功。 此外,我发现问题:
您能用可扩展的解决方案帮助我实现目标吗
您可以调整this solution以满足您的需要:
a
创建另一个字典,该字典将包含相同的键和从值创建的正则表达式*
字符,如果您指的是任何零个或多个单词字符,请将其替换为\w*
;如果您指的是任何零个或多个非空白字符,请使用\S*
(请调整def quote(self, char)
方法),否则,请引用字符(?<!\w)
和(?!\w)
,或者如果它们干扰匹配的非单词条目,则将它们全部删除(?<!\w)(?:cat|dog(?:\ and\ cat)?)(?!\w)
(demo),第二个看起来像(?<!\w)(?::\)|I've\ been|asp\w*)(?!\w)
(demo)见Python demo:
相关问题 更多 >
编程相关推荐