我的意图是用base64数据编码的URI(我有〜70个脱机html文件)替换html图像源路径。这是我所拥有的:
html = '<html> ... </html>'
images = {'graphics/blah.png': 'base64 data uri here', ...}
for image_path in images:
if image_path in html:
html = html.replace(image_path, images[image_path])
不幸的是,images[image_path]
的字符串确实很长,从〜17k字符到〜500k字符不等,我认为这会大大减慢替换过程。有什么办法,如何加快替换为巨大的子字符串?
到目前为止,我已经尝试过:
html = '<html> ... </html>'
images = {'graphics/blah.png': 'base64 data uri here', ...}
for image_path in images:
if image_path in html:
html = html.split(image_path)
html = images[image_path].join(html)
但是令我惊讶的是,它大约需要与之前的代码段相同的时间。
我也尝试过re.sub(),结果和multiprocessing.Pool都一样,但是我只有两个内核,这从原来的9.5秒左右的过程改进到了大约8秒,仍然有些改进(用户等待显示的结果页面)