擅长:python、mysql、java
<p>您可以在这里使用<a href="https://docs.python.org/2/library/itertools.html#itertools.count" rel="nofollow noreferrer">^{<cd1>}</a>,并利用以下事实:创建函数时会计算默认参数,可变默认参数的值<a href="https://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument">can persist between function calls.</a></p>
<pre><code>from itertools import count
def rep(m, cnt=count()):
return '[[Image:%s_%s.%s]]' % ('outname', next(cnt) , 'extension')
</code></pre>
<p>此函数将为找到的每个匹配项调用,并为每个替换项使用一个新值。你知道吗</p>
<p>因此,您只需更改代码中的这一行:</p>
<pre><code>wikilines[i] = re_imagematch.sub(rep, wikilines[i])
</code></pre>
<p>演示:</strong></p>
<pre><code>def rep(m, count=count()):
return str(next(count))
>>> re.sub(r'a', rep, 'aaa')
'012'
</code></pre>
<p>要获取当前计数器值:</p>
<pre><code>>>> from copy import copy
>>> next(copy(rep.__defaults__[0])) - 1
2
</code></pre>