在python中查找和替换文本

2024-09-28 05:27:04 发布

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

我有一个html文件,其中包含指向特定文件的超链接。我想找到该文件中的所有href链接,并用指向该文件的绝对路径替换这些链接。你知道吗

<BR><CENTER><TABLE BORDER=1 CELLPADDING=0 NOSAVE><TR ALIGN=CENTER NOSAVE><TD COLSPAN="4" NOSAVE><CENTER><B>Summary Table</B></CENTER><TR><TD>Testname</TD><TD>Status</TD><TD>Link to HTML</TD><TD>Utility</TD></TR><TR><TD>test1</TD><TD>FAIL</TD><TD><A HREF= abc.html>HTML_report</a></BR></TD><TD>run</TD></TR><TR><TD>31Jan2017_03h12m52s</TD><TD>FAIL</TD><TD><A HREF=def.html>HTML_report</a></BR></TD><TD>run_2</TD></TR></TABLE></CENTER><BR>

更换后,应该是-

<BR><CENTER><TABLE BORDER=1 CELLPADDING=0 NOSAVE><TR ALIGN=CENTER NOSAVE><TD COLSPAN="4" NOSAVE><CENTER><B>Summary Table</B></CENTER><TR><TD>Testname</TD><TD>Status</TD><TD>Link to HTML</TD><TD>Utility</TD></TR><TR><TD>test1</TD><TD>FAIL</TD><TD><a href=common?htmlview=1&file="absolute_path to abc.html">HTML_report</a></BR></TD><TD>run</TD></TR><TR><TD>31Jan2017_03h12m52s</TD><TD>FAIL</TD><TD><a href=common?htmlview=1&file="absolute_path to def.html">HTML_report</a></BR></TD><TD>run_2</TD></TR></TABLE></CENTER><BR>

我正在逐行读取html文件,因此一行可以出现多个a href。 我试过使用回复sub找到并放置-

re.sub(r'\sA\sHREF\s','a href=common?htmlview=1&file=<path>',line) 

Tags: 文件torunbrreporthtmltablecommon
1条回答
网友
1楼 · 发布于 2024-09-28 05:27:04

不要试图使用regex来操纵html,使用lib,比如BeautifulSoup

from bs4 import BeautifulSoup

soup = BeautifulSoup('<BR><CENTER><TABLE BORDER=1 CELLPADDING=0 NOSAVE><TR ALIGN=CENTER NOSAVE><TD COLSPAN="4" NOSAVE><CENTER><B>Summary Table</B></CENTER><TR><TD>Testname</TD><TD>Status</TD><TD>Link to HTML
</TD><TD>Utility</TD></TR><TR><TD>test1</TD><TD>FAIL</TD><TD><A HREF= abc.html>HTML_report</a></BR></TD><TD>run</TD></TR><TR><TD>31Jan2017_03h12m52s</TD><TD>FAIL</TD><TD><A HREF=def.html>HTML_report</a></BR></TD
><TD>run_2</TD></TR></TABLE></CENTER><BR>')

for link in soup.find_all('a'):
    link['href'] = 'fix the absolute path here %s' % (link.get('href'),)

print soup.prettify()

相关问题 更多 >

    热门问题