如何在字符串中查找模式并在HTML代码中进行替换

时间:2019-07-19 09:50:25

标签: python flask

我在字符串变量中有HTML代码。我要从此修改此标签:

<a href="/fileszzr/images/3.jpg">3.jpg</a>

<a href="/fileszzr/images/3.jpg" download="3.jpg">3.jpg</a>,基本上添加“ download="3.jpg"

我想这样做,所有链接的末尾都扩展为.jpg.png.gif.jpeg.mp4

1 个答案:

答案 0 :(得分:0)

也许有更简单的方法可以完成此操作,但是我认为一种开始的方法可能是使用regex。定义模式以查找所有文件结尾。然后获取文件名(例如3.jpg)以编译一个.replace()为第一个模式的字符串。像这样:

import re 
# all possible formats you mentioned:
html = ['<a href="/fileszzr/images/3.jpg">3.jpg</a>',
'<a href="/fileszzr/images/3.png">3.png</a>',
'<a href="/fileszzr/images/3.gif">3.gif</a>',
'<a href="/fileszzr/images/3.jpeg">3.jpeg</a>',
'<a href="/fileszzr/images/3.mp4">3.mp4</a>']
# regex patterns (everything within paranthesis is going to be extracted
regex1 = re.compile(r'(\.jpg\"|\.png\"|\.gif\"|\.jpeg\"|\.mp4\")')
regex2 = re.compile(r'\/images\/(.*?)\.')
# iterate over the strings
for x in html:
  if regex1.search(x): # if pattern is found:
    # find and extract
    a = regex1.search(x).group(1)
    b = regex2.search(x).group(1)
    # compile new string by replacing a
    new = x.replace(a, f'{a} download="{b + a}')
    print(new)

这给您:

<a href="/fileszzr/images/3.jpg" download="3.jpg">3.jpg</a>
<a href="/fileszzr/images/3.png" download="3.png">3.png</a>
<a href="/fileszzr/images/3.gif" download="3.gif">3.gif</a>
<a href="/fileszzr/images/3.jpeg" download="3.jpeg">3.jpeg</a>
<a href="/fileszzr/images/3.mp4" download="3.mp4">3.mp4</a>

如果您想进一步了解regex,请参阅documentation。 此外,请注意,Python版本> 3.6支持f字符串(如f'{a} download="{b + a}')。