IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

conseils pour extraire rapidement des infos dans XML


Sujet :

Python

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2017
    Messages : 32
    Par défaut conseils pour extraire rapidement des infos dans XML
    Bonjour à tous,

    J'ai un énorme fichier XML (1,7 GB) qui comporte les mots de dictionnaire et leurs synonymes quand il en existe.
    Ce fichier se présente sous la forme suivante :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?xml version="1.0" encoding="utf-8"?>
    <glawi lang="fr" dateDump="2015-12-26" endParsingDate="2016-05-18_15:47:02">
    <article>
        <title>aulacode</title>
        <pageId>475227</pageId>
        <meta>
          <category>Rongeurs en français</category>
          <reference>Meyer|article=aulacodes</reference>
        </meta>
        <text>
          <pos type="nom" lemma="1" locution="0" number="s">
            <subsection type="semRel">
              <item type="synonym">rat des roseaux</item>
              <item type="hyperonym">hystricognathe</item>
              <item type="hyperonym">thryonomyidé</item>
            </subsection>
          </pos>
        </text>
      </article>
    </glawi>

    Mon objectif est tout d'abord de chercher si un mot existe dans ce dictionnaire (par exemple ici "aulacode" dans la balise "title"), et si c'est le cas savoir si ce mot a des synonymes, antonymes etc. (balises <item type="synonym">...).
    Je souhaiterais donc avoir le résultat suivant :
    Nom : wiki.png
Affichages : 86
Taille : 4,0 Ko


    Ce que j'ai fait jusqu'à présent fonctionne sur un petit extrait du fichier XML mais dès que je dois travailler sur l'intégralité, cela prend tellement de temps que je n'ai même pas de résultat. J'ai l'impression que le chargement du fichier XML seul prend déjà un temps fou.
    Auriez-vous des conseils pour avoir quelque chose qui fonctionne rapidement ?
    Ci-dessous mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import xml.etree.ElementTree as ET
     
    tree = ET.parse(xmlFile)
    root = tree.getroot()
    for element in root:
        for child in element:
            if child.tag == "title":
                print("entree witionnaire = " + str(child.text))
                for child in element:
                    if child.tag == "text":
                        for grandchild in child:
                            for grandgrandchild in grandchild:
                                for grandgrandgrandchild in grandgrandchild:
                                    print("\t" + str(grandgrandgrandchild.attrib.get("type")) + "= " + str(grandgrandgrandchild.text))

    Un grand merci d'avance !!

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 681
    Par défaut
    Salut,

    Citation Envoyé par gingko41 Voir le message
    J'ai l'impression que le chargement du fichier XML seul prend déjà un temps fou.
    Auriez-vous des conseils pour avoir quelque chose qui fonctionne rapidement ?
    Vous avez 2 méthodes pour lire un fichier XML, lire tout le fichier pour construire l'arbre correspondant en mémoire puis piocher dedans (ce que vous faites est la méthode DOM) et SAX qui va permettre de récupérer les informations recherchées sans passer par...

    Et vous pouvez utiliser SAX pour récupérer ce qu'il y a entre les balises "article" successives et utiliser DOM pour en analyser le contenu "normalement".
    note: pour faire çà (récupérer ce qu'il y a entre 2 balises) on peut aussi le faire avec des regexp, le petite difficulté étant de faire faire les lectures pendant le "parsing".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [MySQL] aide pour parcourir un array multi et insérer des info dans bdd
    Par kairi084 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/12/2010, 18h18
  2. [windev XI] Recuperation des infos dans un xml
    Par nemosfib dans le forum WinDev
    Réponses: 2
    Dernier message: 25/03/2008, 16h27
  3. [XML] [SAX] Extraire le nom des balises dans XML
    Par Fusio dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/06/2007, 23h19
  4. [TP7] Renvoyer des infos dans la console pour redirection
    Par Natopsi dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 05/11/2005, 18h21
  5. Réponses: 2
    Dernier message: 19/01/2004, 12h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo