【发布时间】:2016-03-17 00:46:05
【问题描述】:
我正在开发一个函数,它可以用给定的规则翻译给定的文本。
def bork(text):
"""
Implementation of language transformation based on Swedish-Chef talk.
"""
rules = {"\be": "i",
"the": "zee",
"\Be\b": "e-a",
"an": "un"
}
rules = dict((re.escape(k), v) for k, v in rules.items())
pattern = re.compile("|".join(rules.keys()))
borked = pattern.sub(lambda i: rules[re.escape(i.group(0))], text.strip())
return borked
text = """experienced"""
print bork(text)
# gives "experienced"
它应该在哪里提供"ixperienced"。因为规则\be: i。其他转换在使用较大输入进行测试时效果很好,但失败了,请帮助我。
编辑:我添加了规则"\Bi\B": "ee"。结果应该是"ixpereeenced"。这也没有奏效。我仍然收到"experienced"。
Edit2:似乎问题存在于我使用反斜杠的规则中,但是,我尝试使用原始字符串和re.escape()。之后,我尝试删除re.escape(),但这给了我字典调用中的一个关键错误。(我也想知道为什么会发生这种情况)
【问题讨论】:
标签: python regex python-2.7 python-3.x