2010-09-08 8 views
0

Je dispose d'un fichier texte avec html:remplacer un élément dans une balise html sur plusieurs lignes en

Blah, blah, blah 

some text is here. 

<div> something here 

something else </body></html> 

jusqu'à présent, si les balises sont sur une seule ligne cela fonctionne:

textfile = open("htmlfile.txt", "r+") 

text = textfile.read() 

a = re.search('<div.+?<\/html>', text) 

repstr = c.group(0) 

text = text.replace(repstr, '', 1) 

fonctionne très bien , Je n'ai pas de balises imbriquées. Mais si les étiquettes sont sur plusieurs lignes, comme dans le premier exemple, cela ne fonctionne pas! Que puis-je utiliser pour tester plusieurs lignes?

Répondre

0

Par défaut, le point ne correspond pas aux nouvelles lignes. Pour le faire correspondre à de nouvelles lignes, vous devez compiler le regex avec le drapeau re.DOTALL, par exemple:

a = re.search('<div.+?<\/html>', text, re.DOTALL) 

Cela dit, vous avez vraiment shouldn't use regex to parse HTML.

vous une faveur et d'utiliser un analyseur XML comme BeautifulSoup.

+0

oh, je vois. Mon projet est assez simple et ne nécessite pas vraiment Beautifulsoup, mais malade gardez cela à l'esprit. Merci! –