0

<img>複数のタグを含む HTML のチャンクがあります。タグの現在の形式は次のとおりです。

<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でタグが出現するたびにそれを行う方法がわかりません

4

1 に答える 1

2

ファイル名をグループとしてキャプチャする必要があります。その後、一度に置き換えることができます。

re.sub(r'/images/stories/([\w%]+\.(?:jpg|png|gif))', r'{{media url="wysiwyg/\1"}}', content)

(...)これにより、拡張子を含むファイル名全体の周りにキャプチャグループ( )が配置され(代わりにキャプチャグループが使用されるようになります)、次のようになります。(?:...)

>>> 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()ドキュメントを参照してください。

この呼び出しは、一致するすべてのパスを構文re.sub()に置き換えます。/images/stories/..{{media url="wisywig/.."}}

于 2013-03-19T17:30:05.693 に答える