2011-10-20 4 views
0

J'utilise le module etree. J'essaie d'extraire l'information autour de <text ...> tag. Voici my XML file. Je veux si <text ...">{{Infobox film commencer par Infobox film puis copier tout le texte entre {{ }}. C'est possible? grâceExtrait des informations de XML

Mise à jour: fichier XML mis à jour

Répondre

2

L'extrait suivant devrait faire ce que vous voulez:

import re 
from xml.etree import ElementTree            

with open('films.xml') as f:              
    xml = ElementTree.parse(f)             

for t in xml.findall('.//{http://www.mediawiki.org/xml/export-0.5/}text'): 
    print '====================' 
    m = re.search(r'(?s).*?{{(Infobox film.*?)}}', t.text) 
    if m: 
     print m.group(1) 

L'expression régulière, il commence par (?s), qui tourne sur l'option DOTALL, ce qui signifie que . matchs retour à la ligne ainsi que tout autre personnage. Les deux instances de .*? sont des correspondances non gourmandes de n'importe quel caractère, c'est-à-dire qu'elles trouveront l'extension la plus courte de zéro ou plusieurs caractères jusqu'à ce que le reste de l'expression puisse être apparié.

+0

Merci Mais je veux que si la balise ' 'a des valeurs' film d'infobox', alors imprimez le contenu de la balise de texte. –

+0

Fichier XML mis à jour. Fonctionne bien. Merci beaucoup :-) –

+0

@ user559744: J'ai mis à jour ma réponse pour montrer comment extraire le texte de la section '{{Infobox film ..}}'. –

Questions connexes