2017-02-04 11 views
-1

Ich habe eine HTML-Datei mit Hyperlinks zu bestimmten Dateien. Ich möchte alle href-Links in dieser Datei finden und die Links durch die absoluten Pfade zu der Datei ersetzen.Suchen und Ersetzen von Text in 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= 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> 

Nach dem Austausch sollte diese aussehen -

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

ich die HTML-Datei Zeile für Zeile lese, so dass eine einzelne Zeile kann mehr als ein Vorkommen hat einen href. Ich habe versucht, re.sub mit finden und Ort -

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

Warum sind Sie HTML mit Regex Parsen? – jonrsharpe

+0

Man analysiert nicht einfach HTML mit Regex [aus diesen Gründen] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags). Sie können [beautifulsoup] (https://www.crummy.com/software/BeautifulSoup/bs4/doc/) verwenden. – MYGz

+0

... hatten Sie eine Frage? – melpomene

Antwort

0

Versuchen Sie nicht, Regex zu verwenden html zu manipulieren, lib mit wie 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

Dies sollte ein Kommentar sein. – Toto

+0

@Toto Normalerweise würde ich zustimmen, aber ich kann nicht sagen, "das ist kein Versuch, die Frage zu beantworten" in diesem Fall, weil es keine Frage gibt. – melpomene

+1

@melpomene: Richtig, aber keine Frage ==> keine Antwort. – Toto

Verwandte Themen