这个问题挺有意思,我跟答一条,谈谈它的应用。最近在翻译论文的时候遇到了一个难题:文本中夹杂有太多的公式,如何翻译出叙述逻辑同时保持公式内容不变呢?最简单的想法就是将每一个公式替换为一个UUID(书写成翻译软件不翻译的停用词格式,比如使用尖括号括起来),然后进行翻译,将翻译的结果再按照之前的映射关系逆向映射回去。这里需要使用的核心技术就是,正则匹配中统一匹配、分别替换的功能。
import re text = 'a.b.c.d.e.f.g' nums = ['1', '2', '3', '4', '5', '6'].__iter__() # nums = '123456'.__iter__() print(re.sub(r".", string=text, repl=lambda x: next(nums))) nums = { 'a': "alpha", 'b': "beta", 'c': "gamma", 'd': "delta" } print(re.sub(r"[a-z]", string=text, repl=lambda x: nums[x.group()]))