2017-02-04 14 views
-1

特定のファイルへのハイパーリンクを持つhtmlファイルがあります。私はこのファイル内のすべてのhrefリンクを見つけて、リンクをファイルへの絶対パスで置き換えたいと考えています。私はラインによってhtmlファイルの行を読んでいますので、一行は、HREFの複数のオカレンスを持つことができますpythonのテキストを検索して置換する

<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> 

-

<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> 

交換した後、これは次のようになります。 私が見つけ、場所ためにre.subを使用して試してみました -

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

は、なぜあなたは正規表現でHTMLを解析しているとのlibを使用して、HTMLを操作するために正規表現を使用しようとしないのですか? – jonrsharpe

+0

ただ、htmlをregex [これらの理由から](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)で解析するのではありません。 [beautifulsoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/)を使用することができます。 – MYGz

+0

...質問がありましたか? – melpomene

答えて

0

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() 
+0

コメントです。 – Toto

+0

@トート通常、私は同意しますが、質問がないので、「これは質問に答える試みではない」とは言えません。 – melpomene

+1

@melpomene:そうだけど質問はありません==>答えはありません。 – Toto

関連する問題