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 :

Parser des phrases dans un tuple pour récuperer les mots?


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 47
    Points
    47
    Par défaut Parser des phrases dans un tuple pour récuperer les mots?
    Bonjour,

    Je poste ce message car j'ai un problème pour parser sans problèmes mes phrases.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((u'Systeme',), (u'Telephonie',), (u'Applicatif',), (u'Antivirus',), (u'Autre',), (u'DNS',), (u'Filtrage',), (u'systemes linux redhat',), (u'tuxedo',), (u'systemes linux redhat / unix aix',), (u'systeme aix',), (u'systeme unix aix',), (u' 8.3',))
    Pour spliter les mots, j'ai utilisé, avec liste_tuple qui a mon tuple de phrases récupérés de ma BDD.
    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
     
        liste = list(liste_tuple)
        while (liste != []):
                fichier = str(liste.pop(0))
                liste_mots = fichier.split(' ')
                print type(liste_mots)
                print liste_mots
                while (liste_mots != []):
                    mot = str(liste_mots.pop(0))
                    my_mot = str(mot)
                    print type(my_mot), my_mot
                    if my_mot not in dictionnaire:
                        print "Don't Exist"
                        dictionnaire[mot] = 1
                    else:
                        print "Existe"
                        dictionnaire[my_mot] = dictionnaire[my_mot] + 1
        print dictionnaire
    Or, le problème est que je récupère des mots, qui gardent les symboles d'unicodes, etc...

    Par exemple:

    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
    ["(u'Systeme',)"]
    <type 'str'> (u'Systeme',)
    Don't Exist
    <type 'list'>
    ["(u'Telephonie',)"]
    <type 'str'> (u'Telephonie',)
    Don't Exist
    <type 'list'>
    ["(u'Applicatif',)"]
    <type 'str'> (u'Applicatif',)
    Don't Exist
    <type 'list'>
    ["(u'Antivirus',)"]
    <type 'str'> (u'Antivirus',)
    Don't Exist
    <type 'list'>
    ["(u'Autre',)"]
    <type 'str'> (u'Autre',)
    Don't Exist
    <type 'list'>
    ["(u'DNS',)"]
    <type 'str'> (u'DNS',)
    Don't Exist
    <type 'list'>
    ["(u'Filtrage',)"]
    <type 'str'> (u'Filtrage',)
    Don't Exist
    <type 'list'>
    ["(u'systemes", 'linux', "redhat',)"]
    <type 'str'> (u'systemes
    Don't Exist
    <type 'str'> linux
    Don't Exist
    <type 'str'> redhat',)
    Don't Exist
    <type 'list'>
    ["(u'tuxedo',)"]
    <type 'str'> (u'tuxedo',)
    Don't Exist
    <type 'list'>
    ["(u'systemes", 'linux', 'redhat', '/', 'unix', "aix',)"]
    <type 'str'> (u'systemes
    Existe
    <type 'str'> linux
    Existe
    <type 'str'> redhat
    Don't Exist
    <type 'str'> /
    Don't Exist
    <type 'str'> unix
    Don't Exist
    <type 'str'> aix',)
    Don't Exist
    Je ne sais pas du tout comment les transformer en string simple...

    Merci d'avance.

    Cordialement,

  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
    Salut,

    Je ne comprends pas trop les multiples appels à str.

    Comme vos "mots" sont sous forme de tuple, genre:
    >>> s = (u'Systeme',)

    en leur appliquant la fonction "str" vous récupérez
    "(u'Systeme',)"

    Alors que vous préféreriez:
    >>> s[0]
    u'Systeme'
    ou
    >>> str(s[0])
    'Systeme'

    Après les questions sont:
    - pourquoi avoir une liste de "tuple" contenant un string en unicode plutôt qu'une liste de string unicode?
    - pourquoi vouloir appliquer str à de l'unicode alors que l'unicode est à priori suffisant sinon "très bien".

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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 47
    Points
    47
    Par défaut
    Bonne question...

    Ton post m'a fait rendre compte que je compliquais trop les choses. J'avais pas essayé de parcourir le tuple, mais je le faisais passer en liste.

    Mais finallement, c'est beaucoup plus simple et joli de parcourir direct le tuple (je n'y arrivais pas, mais c'est bon maintenant), et puis, j'ai pu enlever 80% des str()! De plus, je n'arrivais pas à récupérer le string dans le tuple, mais avec str(mot[0]), c'est parfait!

    Merci beaucoup.

  4. #4
    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
    Salut,

    Je ne comprends toujours pas l'intérêt des "str".

    Enfin, si le but est de compter les mots identiques, vous pourriez faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from collections import defaultdict
    dictionnaire = defaultdict(int)
    for mot in liste:
        dictionnaire[mot] += 1
    Cordialement,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. [PHP 5.4] Comment ajouter des slash dans un integer pour séparer les digits
    Par Rohan21 dans le forum Langage
    Réponses: 4
    Dernier message: 06/08/2013, 03h09
  2. Réponses: 6
    Dernier message: 31/07/2006, 16h01
  3. concatener des "phrases" dans un char*
    Par thierry_b dans le forum C
    Réponses: 3
    Dernier message: 13/11/2005, 11h45
  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: 1
    Dernier message: 27/07/2005, 11h47

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