2010-07-23 2 views
0

Aide vous plaît à faire de la chaîne comme:Besoin d'aide avec les expressions régulières en Python

<a href="http://testsite.com" class="className">link_text_part1 <em>another_text</em> link_text_part2</a> 
chaîne

comme:

link_text_part1 another_text link_text_part2 

en utilisant des expressions régulières en Python

noter testsite.com changements

+3

Veuillez ne pas le faire avec des expressions régulières. S'il vous plaît utiliser la belle soupe. –

+0

J'ai besoin d'obtenir des données (lien/linktext) en utilisant Scrapy grome la recherche google – Gennadich

+0

à S.Lott: merci, en lisant à ce sujet – Gennadich

Répondre

1

Donc, vous voulez enlever e les étiquettes <a> et <em>? Cela peut se faire comme ceci:

>>> s = '<a href="http://testsite.com" class="className">link_text_part1 <em>another_text</em> link_text_part2</a>' 

>>> re.sub("</?(a|em).*?>", "", s) 
'link_text_part1 another_text link_text_part2' 

En anglais, cette fonction recherche pour:

  • Un < caractère
  • éventuellement suivie d'un/(pour obtenir les balises de fermeture)
  • suivie 'a' ou 'em'
  • suivi de n'importe quoi jusqu'à et incluant le premier caractère>

et les remplace par des chaînes vides. Cependant, comme le dit Kos, utiliser regex pour analyser HTML est très risqué et fragile, à moins que vous sachiez que le format du HTML que vous analysez ne changera jamais.

+0

merci. mais cela n'a pas aidé avec scrapy – Gennadich

1
string = re.sub('<[^>]+>', '', string) 
+0

merci. mais cela n'a pas aidé trop – Gennadich

+0

vous avez probablement besoin d'un drapeau global. – bluesmoon

1

Le traitement HTML avec des expressions régulières, même pour des cas simples, est généralement fortement déconseillé. Vous ne saurez jamais quand vous frappez du code HTML qui va perturber votre regex. Un analyseur HTML léger est généralement une solution plus fiable et plus élégante.

+0

merci, je me souviendrai que – Gennadich

0

BTW. Cela a aidé:

from scrapy.utils.markup import remove_tags 
... 
bbb=remove_tags(aaa) 
Questions connexes