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 :

Décalage de stockage sur 2 listes


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2018
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Décalage de stockage sur 2 listes
    Bonjour à tous !

    Je vous explique mon problème, j'aimerais reconnaître des balises dans 2 différents fichiers et pour ensuite les insérer dans 2 listes de int. J'ai réussi cette partie du code mais :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    liste_test =['<1>  <2>  <3> ','<1>  <5> ', '<5> '
                 ]
     
    liste_test_1=['<1> <2> ', '<1>  <5> ', '<5> '
                 ]
     
     
    liste=[]
    liste_1=[]
     
     
     
    for x in range(len(liste_test)):
        i=0
        j=0
        k=0
        l=0
        m=0
     
        if '<1>' in liste_test[x]:
            while i<liste_test[x].count('<1>'):
                liste.append(1)
                i=i+1
     
        if '<2>' in liste_test[x]:
             while j<liste_test[x].count('<2>'):
                liste.append(2)
                j=j+1
     
        if '<3>' in liste_test[x]:
            while k<liste_test[x].count('<3>'):
                liste.append(3)
                k=k+1
        if '<4>' in liste_test[x]:
            while l<liste_test[x].count('<4>'):
                liste.append(4)
                l=l+1
        if '<5>' in liste_test[x]:
            while m<liste_test[x].count('<5>'):
                liste.append(5)
                m=m+1
        if liste_test[x].find('<') == -1:
               liste.append(0)
     
    for x in range(len(liste_test_1)):
        i=0
        j=0
        k=0
        l=0
        m=0
     
        if '<1>' in liste_test_1[x]:
            while i<liste_test_1[x].count('<1>'):
                liste_1.append(1)
                i=i+1
     
        if '<2>' in liste_test_1[x]:
             while j<liste_test_1[x].count('<2>'):
                liste_1.append(2)
                j=j+1
     
        if '<3>' in liste_test_1[x]:
            while k<liste_test_1[x].count('<3>'):
                liste_1.append(3)
                k=k+1
        if '<4>' in liste_test_1[x]:
            while l<liste_test_1[x].count('<4>'):
                liste_1.append(4)
                l=l+1
        if '<5>' in liste_test_1[x]:
            while m<liste_test_1[x].count('<5>'):
                liste_1.append(5)
                m=m+1
        if liste_test_1[x].find('<') == -1:
               liste_1.append(0)
    Dans la liste "liste" j'obtiens : [1,2,3,1,5,5] et dans la liste "liste_1" j'obtiens : [1,2,1,5,5]

    Ce qui amène à un décalage car je veux ensuite comparer les listes. J'aimerais par conséquent obtenir dans "liste_1" : [1,2,0,1,5,5]


    Quelqu'un pour m'éclairer ? Car cela fait maintenant pas mal de jours où je bloque.


    Merci d'avance !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par TitomTommy Voir le message
    Quelqu'un pour m'éclairer ? Car cela fait maintenant pas mal de jours où je bloque.
    C'est quoi ce code?
    Apprenez les fonctionnalités de base du langage.
    Si on part de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> L = ['<1>  <2>  <3> ', '<1>  <5> ', '<5> ']
    ses éléments sont des chaînes de caractères.
    De base .split de chaque élément va vous récupérer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> for e in L:
    ...     print (e, '***', e.split())
    ...
    <1>  <2>  <3>  *** ['<1>', '<2>', '<3>']
    <1>  <5>  *** ['<1>', '<5>']
    <5>  *** ['<5>']
    >>>
    i.e. des sous-listes de chaînes de caractères à nettoyer un peu avant d'en faire "int":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> for e in L:
    ...     for s in e.split():
    ...         print(s[1:-1])
    ...
    1
    2
    3
    1
    5
    5
    >>>
    Ajouter ensuite un 0 à la fin de chaque sous-liste de longueur impaire sera trivial...

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2018
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Je réitère ma question car je m'apercois que je n'ai pas été assez précis et je m'en excuse.


    Tout d'abord les deux listes que j'ai initialisé (liste_test et liste_test_1) ont été simplifié pour la compréhension de mon code car en réalité chaque indice ne contient pas que des <1> ou des <n> mais contient également des chaines de caractères. (D'ou mon code un peu barbare.)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    Bonjour

    Dans le code proposé par wiztricks, la variable s contient des valeurs de type str
    Donc tu peux en faire ce que tu veux : wiztricks a retiré le premier et dernier caractère car cela correspondait à ta demande mais à toi de savoir quel traitement faire.
    Le savoir est une arme alors soyons armés

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2018
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Mais si vous voulez voir en détail le réel intitulé de mon code voici :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    liste_test =["Sur le plan ophtalmologique,  <1>Madame  X </patient> présente une sclérite, traitée par hautes doses de <5>Prednisone</drug>, suivie par les <3> Docteures <3>X</doctor> et <3>X </doctor> </doctor> en ophtalmologie.",
                 " Un rendez-vous est organisé pour <2>le 14.06.2013 </date>, pour un et une réévaluation des doses de <5>Prednisone </drug>.",
                 " Un traitment prophylactique par IPP est introduit, à réévaluer après arrêt <5>des corticoïdes </drug> ."
                 ]
     
    liste_test_1=[ "Sur le plan ophtalmologique, <1> Madame X </patient> présente une sclérite, traitée par hautes doses de <5> Prednisone </drug>, suivie par les <médecins><3> Docteures X et X </doctor> en ophtalmologie.",
                  " Un rendez-vous est organisé pour le 30.02.2013 <2> le 14.06.2013 </date>, pour un et une réévaluation des doses de <5> Prednisone </drug>.",
                  " Un traitment prophylactique par IPP est introduit, à réévaluer après arrêt des corticoïdes."
                 ]
     
    #import re
     
    #ok =re.findall('<(\d)>',''.join(liste_test))
     
     
     
    liste=[]
    liste_1=[]
     
     
     
    for x in range(len(liste_test)):
        i=0
        j=0
        k=0
        l=0
        m=0
     
        if '<1>' in liste_test[x]:
            while i<liste_test[x].count('<1>'):
                liste.append(1)
                i=i+1
     
        if '<2>' in liste_test[x]:
             while j<liste_test[x].count('<2>'):
                liste.append(2)
                j=j+1
     
        if '<3>' in liste_test[x]:
            while k<liste_test[x].count('<3>'):
                liste.append(3)
                k=k+1
        if '<4>' in liste_test[x]:
            while l<liste_test[x].count('<4>'):
                liste.append(4)
                l=l+1
        if '<5>' in liste_test[x]:
            while m<liste_test[x].count('<5>'):
                liste.append(5)
                m=m+1
        if liste_test[x].find('<') == -1:
               liste.append(0)
     
    for x in range(len(liste_test_1)):
        i=0
        j=0
        k=0
        l=0
        m=0
     
        if '<1>' in liste_test_1[x]:
            while i<liste_test_1[x].count('<1>'):
                liste_1.append(1)
                i=i+1
     
        if '<2>' in liste_test_1[x]:
             while j<liste_test_1[x].count('<2>'):
                liste_1.append(2)
                j=j+1
     
        if '<3>' in liste_test_1[x]:
            while k<liste_test_1[x].count('<3>'):
                liste_1.append(3)
                k=k+1
        if '<4>' in liste_test_1[x]:
            while l<liste_test_1[x].count('<4>'):
                liste_1.append(4)
                l=l+1
        if '<5>' in liste_test_1[x]:
            while m<liste_test_1[x].count('<5>'):
                liste_1.append(5)
                m=m+1
        if liste_test_1[x].find('<') == -1:
               liste_1.append(0)
     
        if len(liste_test_1[x]) < len(liste_test[x]) :
            liste_1.append(0)

    Et le problème ici reste le meme car il y a un decalage de lecture dans ma seconde liste

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par TitomTommy Voir le message
    Et le problème ici reste le meme car il y a un decalage de lecture dans ma seconde liste
    Quelque soit le problème à résoudre, bon courage à ceux qui auront envie de lire votre code.

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

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 046
    Points : 1 376
    Points
    1 376
    Par défaut
    comme j'ai déjà répondu sur un autre forum, il faut flatten les listes avant de comparer une à une les balises, ou rechercher des séquences ... Enfin, perso je pense que ce serait plus simple.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2018
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Pas besoin d'etre méprisant envers les autres, je débute sur python donc au lieu de critiquer, me donner des conseils seraient peut etre mieux appropriés.



    A bon entendeur

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par TitomTommy Voir le message
    Pas besoin d'etre méprisant envers les autres, je débute sur python donc au lieu de critiquer, me donner des conseils seraient peut etre mieux appropriés.
    Je vous ai déjà donné pistes et conseils, mais vous ne vous êtes même pas donné la peine d'essayer de les comprendre ou de les explorer...

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

Discussions similaires

  1. simuler un double click sur une liste dans un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/09/2005, 10h45
  2. Décalage de bit sur unsigned char [8]
    Par dboulange dans le forum C++
    Réponses: 14
    Dernier message: 26/07/2005, 14h10
  3. Réponses: 4
    Dernier message: 16/06/2005, 15h37
  4. Selectionnet tous ou faire un clear sur une liste
    Par Canou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/11/2004, 10h26
  5. [Débutant][jsp] évènement sur une liste
    Par phoebe dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h53

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