拿一根绳子换成另一根?

2024-09-28 17:15:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种方法,用其他字符串替换HTML文件中每行的“href”和“src”内容。所以,我需要替换这个:

<img src="images/file.png" alt="">

有了这个:

<img src="data:image/png;base64,PD94bWwgdmVyc2lvbj0i..." alt="">

实际上,我编写了一个函数,可以将文件转换为base64。我需要搜索href/src,获取他的文件路径内容并将其替换为文件的base64版本,但我不知道如何执行。你知道吗

下面是将文件转换为base64的函数:

def filetoB64 (fpath=None,raw=False):
    fstring = None
    fmime = None
    freturn = None

    if fpath is not None:
        if os.path.isfile(fpath):
            fmime = mimetypes.MimeTypes().guess_type(fpath)[0]

            if fmime in (filemimes['text'] + filemimes['image'] + filemimes['audio'] + filemimes['video']):
                with open(fpath,'rb') as f:
                    fcontent = f.read()
                    fstring = base64.encodestring(fcontent).replace('\n','')

                    if raw:
                        freturn = fstring
                    else:
                        freturn = ''.join(['data:',fmime,';base64,',fstring])
            else:
                freturn = fpath
        else:
            freturn = fpath

    return freturn

Tags: 文件srcnone内容imgifpngelse
1条回答
网友
1楼 · 发布于 2024-09-28 17:15:11

我假设您将文件转换为base64的函数完全可以工作。你知道吗

如果要替换HTML代码中的某些标记,可以使用regex如下示例:

import re

string = '<img src="images/file.png" href="http://wwww.linktoreplace.com", alt="">'

to_replace = re.findall('(\w+)="(.*?)"', string)

for k, v in to_replace:
    if k == 'src':
        string = re.sub(v, "src_replaced_by_this_string", string)
    if k == 'href':
        string = re.sub(v, "href_replaced_by_this_string", string)

print(string)

输出:

<img src="src_replaced_by_this_string" href="href_replaced_by_this_string", alt="">

否则,可以使用^{},这是一个Python库,用于从HTML和XML文件中提取数据。你知道吗

相关问题 更多 >