【发布时间】:2022-11-20 02:38:27
【问题描述】:
我有一个网络故事,其中包含带有星号的文字
现在我正在用一个简单而愚蠢的 str.replace 来做
但你可以想象这很痛苦,我需要在文本中搜索以找到审查的所有实例
这是混蛋实例,在不同的地方都是大写的、复数的和带有星号的
toReplace = toReplace.replace("b*stard", "bastard")
toReplace = toReplace.replace("b*stards", "bastards")
toReplace = toReplace.replace("B*stard", "Bastard")
toReplace = toReplace.replace("B*stards", "Bastards")
toReplace = toReplace.replace("b*st*rd", "bastard")
toReplace = toReplace.replace("b*st*rds", "bastards")
toReplace = toReplace.replace("B*st*rd", "Bastard")
toReplace = toReplace.replace("B*st*rds", "Bastards")
有没有办法将所有带有“*”(或任何其他替换字符)的单词与已编译的字典进行比较,并将它们替换为未经审查的单词版本? 也许是正则表达式,但我不这么认为
【问题讨论】:
-
是的,有或没有正则表达式都是可能的。
-
docs.python.org/3/library/fnmatch.html#fnmatch.filter 允许您对字符串列表执行全局匹配;如果在评估过滤器之前将其与从排序字典生成选择性列表配对,它也应该有效。
-
尽管这本身并不能解决主要问题,但请注意,仅对单数词进行替换(因为它们包含在复数形式中)可以将痛苦减半。
标签: python string dictionary replace