Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de REGEX

Sujet résolu
13 février 2011 à 19:32:14

Bonjour les Zér0s,


J'ai encore besoin d'aide avec Python :)

Je dois parser quelque chose du style :

Citation


<table>
<tr>
<td> Jean </td>
<td> 10 </td>
<td> 19 ans </td>
</tr>
<tr>
<td> Yvette</td>
<td> 45 </td>
<td> 78 ans </td>
</tr>
</table>


Pour récupéré les valeurs je fais quelque chose comme ça :

Citation


s = '''<td>(.*)</td>'''
regex = re.compile(s)
a = regex.findall(text)



Avec ça, ma variable a contient une liste d'un unique élément contenant tout le code, je pense que c'est à cause de mon "(.*)", je crois qu'il ne s'arrête pas au 1er </td> rencontré ...


  • Partager sur Facebook
  • Partager sur Twitter
13 février 2011 à 19:49:39

Je pense qu'un dictionnaire serait adapté pour ce genre d'utilisations.
  • Partager sur Facebook
  • Partager sur Twitter
yjltg.
14 février 2011 à 18:17:36

Hum, tu peux essayer avec ça (en supposant que la chaine avec le code html est dans la variable s) :
re.findall("<tr>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td>(.*?)</td>.*?</tr>",\
 ''.join(s.splitlines()))

ça devrait te renvoyer une liste de tuples avec les 3 éléments que tu cherches à récupérer, mais par contre la regex est assez horrible, donc en attendant que quelqu'un te propose quelque chose de mieux...
M'enfin il y a des modules pour parser le html hein, ça sera mieux que ma regex qui ressemble pas à grand chose :lol:
  • Partager sur Facebook
  • Partager sur Twitter