我正在读取一个文件,需要替换某些空标记([[Image:]])。你知道吗
问题是每一个替代品都必须是独一无二的。你知道吗
代码如下:
import re
import codecs
re_imagematch = re.compile('(\[\[Image:([^\]]+)?\]\])')
wf = codecs.open('converted.wiki', "r", "utf-8")
wikilines = wf.readlines()
wf.close()
imgidx = 0
for i in range(0,len(wikilines)):
if re_imagematch.search(wikilines[i]):
print 'MATCH #######################################################'
print wikilines[i]
wikilines[i] = re_imagematch.sub('[[Image:%s_%s.%s]]' % ('outname', imgidx, 'extension'), wikilines[i])
print wikilines[i]
imgidx += 1
这不起作用,因为一行中可能有许多标记:
这是输入文件。你知道吗
[[Image:]][[Image:]]
[[Image:]]
输出应该是这样的:
[[Image:outname_0.extension]][Image:outname_1.extension]]
[[Image:outname_2.extension]]
这就是它现在的样子
[[Image:outname_0.extension]][Image:outname_0.extension]]
[[Image:outname_1.extension]]
我试过使用一个替换函数,问题是这个函数每使用一行只被调用一次回复sub是的
您可以在这里使用^{} ,并利用以下事实:创建函数时会计算默认参数,可变默认参数的值can persist between function calls.
此函数将为找到的每个匹配项调用,并为每个替换项使用一个新值。你知道吗
因此,您只需更改代码中的这一行:
演示:
要获取当前计数器值:
我将使用一个包装在
while
循环中的简单字符串替换:相关问题 更多 >
编程相关推荐