我有单个字母 b、c、d.... 我使用字典和正则表达式库中的 re.sub 和 multiple_replace 函数替换了随机单词。所以,b = 书,c= 厨师,d= dook,等等。
但是,如果重复出现 bb、cc 或 dd ......我希望能够让这些字母打印出其他内容,而不是所有双字母都相当于单个单词,例如 bb= blah、cc = blah , dd= blah 后跟他们的字母。所以 bb=blahb,cc=blahc,dd=blahd。
我怎样才能做到这一点?
我试过了:
print multiple_replace(dict, re.sub(r'([bcdfghjklmnpqrstvwxyz])\1', r'science\1', text, flags = re.I))
其中 dict 是包含单词 b= book、c= cook、d=dook 等的字典。
并且 re.sub 函数包括除元音之外的所有双字母,将替换为单词 science 加上它们的字母。文本表示我想要转换为字典中的字符串替换的输入字符串。
所以,我希望输出为 bb =scienceb, cc=sciencec 但我目前遇到的问题是,而不是打印我想要的字符串“science”。它打印出字典中找到的单词 science 的字符串替换。因此,例如“s”:“sook”,“c”:“cook”,“i”:“i”,“n”:“nook”,
所以它会打印出任何双字母单词,它将在我的文本字符串中用sookcookiecooknooke 替换它。这是为什么?我该如何解决?
如果我感到困惑,请告诉我。非常感谢!
编辑:
这是我正在使用的代码:
import re
def multiple_replace(dict, text):
# Create a regular expression from the dictionary keys
regex = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
# For each match, look-up corresponding value in dictionary
return regex.sub(lambda mo: dict[mo.string[mo.start():mo.end()]], text)
if __name__ == "__main__":
text = "This is my first regex python example yahooa yahoouuee bbbiirdd"
dict = {
"a" : "a",
"b" : "book",
"c" : "cook",
"d" : "dook",
"e" : "e",
"f" : "fook",
"g" : "gook",
"h" : "hook",
"i" : "i",
"j" : "jook",
"k" : "kook",
"l" : "look",
"m" : "mook",
"n" : "nook",
"o" : "o",
"p" : "pook",
"q" : "qook",
"r" : "rook",
"s" : "sook",
"t" : "took",
"u" : "u",
"v" : "vook",
"w" : "wook",
"x" : "xook",
"y" : "yook",
"z" : "zook",
}
print multiple_replace(dict, re.sub(r'([bcdfghjklmnpqrstvwxyz])\1', r'science\1', text, flags = re.I))