Python的正则表达式替换字符串
问题描述:
我有一个HTML块,它包含多个<img>
标签的部件的多个occurencies。标签的当前格式是:Python的正则表达式替换字符串
<img width="580" height="183" src="/images/stories/acidalkalinetable.jpg" alt="acid alkaline table" title="Body pH Balance">
我想通过HTML和每个<img>
标签格式更改为:
<img width="580" height="183" src="{{media url="wysiwyg/acidalkalinetable.jpg"}}" alt="acid alkaline table" title="Body pH Balance">
你可以看到它是一个的改变src
。我已经把文件名却改变的src
其他地方如果IMG是一个字符串我可以这样做:
content = '<img width="580" height="183" src="/images/stories/acidalkalinetable.jpg" alt="acid alkaline table" title="Body pH Balance">'
filename = re.search(r'/images/stories/\w+\.(jpg|png|gif)', content)
new_content = re.sub(r'/images/stories/\w+\.(jpg|png|gif)', '{{media url="wysiwyg/' + filename + '"}}', content)
(我没有测试过)
但我不知道我该怎么做,对于<img>
标签的每一次出现在HTML
答
您需要捕获的文件名作为一个群体,就可以一气呵成替换:
re.sub(r'/images/stories/([\w%]+\.(?:jpg|png|gif))', r'{{media url="wysiwyg/\1"}}', content)
这使得捕获组((...)
)整个文件名包括(本身现在用的是非 -capturing (?:...)
基代替)扩展围绕,导致:
>>> re.sub(r'/images/stories/([\w%]+\.(?:jpg|png|gif))', r'{{media url="wysiwyg/\1"}}', content)
'<img width="580" height="183" src="{{media url="wysiwyg/acidalkalinetable.jpg"}}" alt="acid alkaline table" title="Body pH Balance">'
这使用\1
作为更换模式,请参阅re.sub()
documentation。
这re.sub()
电话将取代所有与{{media url="wisywig/.."}}
语法匹配/images/stories/..
路径。
您确定要报价吗? ''{{media url =“wysiwyg/acidalkalinetable.jpg”}}'',wsiwyg部分在报价之外。 – nhahtdh 2013-03-19 17:33:03
是的,我正在清理要导入到Magento中的数据。这就是它的形象标签 – iamjonesy 2013-03-19 17:35:01