拿一根绳子换成另一根?
Get a piece of string and replace with other one?
我正在寻找一种方法来将 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
我假设您将文件转换为 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="">
否则,您可以使用 BeautifulSoup
,这是一个 Python 库,用于从 HTML 和 XML 文件中提取数据。
我正在寻找一种方法来将 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
我假设您将文件转换为 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="">
否则,您可以使用 BeautifulSoup
,这是一个 Python 库,用于从 HTML 和 XML 文件中提取数据。