<p>可以使用副词和替换词初始化字典</p>
<pre class="lang-py prettyprint-override"><code>dct = {}
with open(r'__t.txt', 'r') as f:
for line in f:
items = line.strip().split('|')
dct[items[0].strip()] = items[1].strip()
</code></pre>
<p><code>dct</code>看起来像<code>{'adverbe1': 'replacement1', 'adverbe2': 'replacement2', 'adverbe3': 'replacement3'}</code></p>
<p>然后,<code>pip install triegex</code>(或者使用来自<a href="https://stackoverflow.com/a/42789508/3832970">Speed up millions of regex replacements in Python 3</a>的这个解决方案)来简化动态正则表达式的构建和使用</p>
<pre class="lang-py prettyprint-override"><code>import triegex, re
dct = {}
with open(PATH_TO_FILE_WITH_SEARCH_AND_REPLACEMENTS, 'r') as f:
for line in f:
items = line.strip().split('|')
dct[items[0].strip()] = items[1].strip()
test = 'Hello adverbe1 this is a test'
pattern = re.compile(fr'\b{triegex.Triegex(*dct.keys()).to_regex()}')
print( pattern.sub(lambda x: dct[x.group()], test) )
# => Hello replacement1 this is a test
</code></pre>
<p>这个演示字典的模式是<code>\b(?:adverbe(?:1\b|2\b|3\b)|~^(?#match nothing))</code>,它将<code>adverbe1</code>、<code>adverbe2</code>、<code>adverbe3</code>作为整个单词进行匹配</p>
<p><code>lambda x: dct[x.group()]</code>是<code>re.sub</code>的替换参数,它获取相应的替换值</p>