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 :

If .. ! problème lors de l'extration de données [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Par défaut If .. ! problème lors de l'extration de données
    Bonjour j'extrais des données numériques d'un fichier XML.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <AgendaNr>21</AgendaNr>
    <Exchange_AgendaNr>0</Exchange_AgendaNr>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                if 'AgendaNr' in l:
                    AgendaNr = 0
                    AgendaNr = l[10:-12]
                    print(AgendaNr)
    Si je fais un print(AgendaNr)
    j'obteins 2 valeurs :

    • 21
    • AgendaNr>0</Exchang


    je ne veux que la valeur numérique ?

    Comment extraire uniquement cette valeur ?

    Voici mon code dans sa totalité :
    Code : 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    import pyodbc
    import glob, sys
    import os.path
    connection = pyodbc.connect("Driver={SQL Server}; Server=a
    cursor = connection.cursor()aaa
     
     
    SQLCommand = ("INSERT INTO APPOINTMENT"  "(NUM_APP, NUM_AGENDA) "
              "VALUES (?,?)")
     
    os.chdir('//es-server/Achilles/DataAchilles\Export/Tables')
     
    for filename in glob.iglob('//es-server/Achilles/DataAchilles\Export/Tables/**/Appointment_*.xml', recursive=True):
        fName = os.path.abspath(os.path.join('data', filename))
     
        file = open(fName, 'r', encoding ='UTF-8')
     
        for l in file:
     
                if 'AppointmentNr' in l:
                    AppointmentNr = l[15:-17]
     
                if 'AgendaNr' in l:
                    AgendaNr = 0
                    AgendaNr = l[10:-12]
                    print(AgendaNr)
     
                if 'PatientAddressNr' in l:
                    PatientAddressNr = 0
                    PatientAddressNr = l[18:-20]
     
                    try:
     
                        Values = [AppointmentNr, AgendaNr]
     
                        cursor.execute(SQLCommand,Values)
                        connection.commit()
                    except:
                            print ("Unexpected error:", sys.exc_info()[0])

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par Muller Guy Voir le message
    je ne veux que la valeur numérique ?

    Comment extraire uniquement cette valeur ?
    Il faut juste que votre test soit moins ambigu car la condition if 'AgendaNr' in l sera vraie aussi bien pour la ligne <AgendaNr>21</AgendaNr> que pour la ligne <Exchange_AgendaNr>0</Exchange_AgendaNr>.

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

  3. #3
    Membre actif
    Inscrit en
    Novembre 2004
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 67
    Par défaut
    GRAND MERCI ... J'étais focalisé sur mes variables ¨
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                if '<AgendaNr>' in l:
                    AgendaNr = l[10:-12]

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Muller Guy Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                if '<AgendaNr>' in l:
                    AgendaNr = l[10:-12]
    Bonjour

    Ce type de code n'est absolument pas pérenne. Que feras-tu le jour où par hasard ta ligne contiendra un espace devant la balise ?
    Généralement, pour lire un xml, on fait une recherche propre sur la balise puis on se focalise sur la valeur mais pas en terme de position, plutôt en terme d'expression.

    Accessoirement il existe diverses librairies de traitement XML qui font ce travail à ta place et qui te renvoient les données extraites proprement...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème lors de l'envoi de données via laision RS 232
    Par Rastaforien dans le forum Langage
    Réponses: 9
    Dernier message: 26/06/2008, 11h54
  2. Problème lors de l'envoi de données via laison RS 232
    Par Rastaforien dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 23/06/2008, 16h36
  3. [MySQL] problème lors de la récupération des données à modifier mysql
    Par brajae85 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/05/2008, 01h36
  4. Problème lors de l'insertion de données
    Par galoi81 dans le forum Oracle
    Réponses: 14
    Dernier message: 30/07/2007, 16h10
  5. Réponses: 1
    Dernier message: 24/05/2007, 11h23

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