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 :

Avancer mot par mot dans une chaîne


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Avancer mot par mot dans une chaîne
    Tout est dans le titre.

    Toute info. est la bienvenue.

  2. #2
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Bonjour,

    Citation Envoyé par rambc Voir le message
    Tout est dans le titre.

    Toute info. est la bienvenue.
    Tu peux récupérer les mots d'une chaîne avec str.split() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> for mot in 'pouet prout plop'.split():
    ...     print mot
    ... 
    pouet
    prout
    plop

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Selon la nature du texte, ce qui sépare les mots peut être plus varié qu'un simple espace. Auquel cas, je propose plutôt de passer par les expressions régulières.

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    import re
     
    motif = r"[ ]*[,;:.!? ][ ]*"
     
    print re.split(motif, "aaa ,  bbb;ccc. ddd, eee fff")
     
    ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff']
    Le motif ici veut dire:
    - espace: zéro ou plus
    - l'un des caractères suivants: ,;:.!? ou un espace
    - espace: zéro ou plus

    Si c'est du texte littéraire, il y a d'autres problèmes. Par exemple, l'apostrophe peut être soit un séparateur situé entre un article et un mot (ex: l'artiste) soit faire partie d'un mot (ex: aujourd'hui). Il faut voir aussi si on veut traiter les traits d'union de fin de ligne. Etc...

    Tyrtamos

  4. #4
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Il est possible de faire un regex plus simple grace au \b (word-boundary).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> import re
    >>> pat = re.compile(r'\b\w+\b')
    >>> motif = "Salut l'ami, comment va,pense;a-aller=chez)ton\nfrere"
    >>> pat.findall(motif)
    ['Salut', 'l', 'ami', 'comment', 'va', 'pense', 'a', 'aller', 'chez', 'ton', 'frere']
    Ou encore, en incluant les apostrophes dans un mot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> pat = re.compile(r"\b[\w']+\b")
    >>> pat.findall(motif)
    ['Salut', "l'ami", 'comment', 'va', 'pense', 'a', 'aller', 'chez', 'ton', 'frere']

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Moi je ne comprends pas ce que signifie "avancer mot par mot".
    Surtout le terme "avancer..."
    Vos codes n'avancent pas, il renvoient chacun une liste.
    S'agit il de faire quelque chose du genre
    for mot in texte: sans traitement préalable du type split() pour isoler les mots ?
    Ou bien de déterminer la liste des mots d'un texte par un traitement comme vous les proposez ?
    On sait tous les difficultés que posent des problèmes liés au langage, surtout des problèmes posés de façon trop générale et floue: «Selon la nature du texte, ce qui sépare les mots peut être plus varié qu'un simple espace» tyrtamos
    Je ne comprends pas qu'on puisse essayer de répondre à une question aussi vague. Ou mal posée.
    Ceci dit sans vouloir froisser personne

  6. #6
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par eyquem Voir le message
    S'agit il de faire quelque chose du genre
    for mot in texte: sans traitement préalable du type split() pour isoler les mots ?
    C'est cela l'idée. Par mot on peut entendre tout groupe maximal de lettres qui se suivent avec éventuellement un seul tiret au milieu.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/05/2010, 17h01
  2. Remplacer un mot entier par un autre dans une chaîne de caractères
    Par clemini dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 19/02/2009, 14h39
  3. Compter nombre de mots dans une chaîne.
    Par xVINCEx dans le forum C++
    Réponses: 22
    Dernier message: 24/11/2004, 13h33
  4. Suppression de mots dans une chaîne
    Par psychomatt dans le forum Langage
    Réponses: 7
    Dernier message: 06/08/2004, 15h34
  5. Comptage de mots dans une chaîne
    Par kikinou dans le forum Pascal
    Réponses: 10
    Dernier message: 01/01/2003, 02h27

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