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 :

problème accents et regex


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2011
    Messages : 28
    Par défaut problème accents et regex
    Je suis un débutant en python et je rencontre le comportement étrange suivant:

    Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win
    32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import re
    >>> print re.findall(u'à',u'voilà')
    [u'\xe0']
    >>> print re.match(u'à',u'voilà')
    None
    >>>

    Merci de m'aider car pour un débutant le codage des caractères en lecture de fichiers "texte" c'est le mystère total...

  2. #2
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Ce n’est pas un problème d’accent, c’est un problème de match()*!

    En effet, cette fonction ne matche qu’au début de la str passée…

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> print re.match(u'.*à', u'voilà')
    <_sre.SRE_Match object at 0x7fbba12e91d0>
    Pour matcher n’importe où dans la chaîne, il faut utiliser search()*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> print re.search(u"à", u"voilà")
    <_sre.SRE_Match object at 0x7fbba12e91d0>
    PS*: Pensez toujours aux balise [CODE] (le #, dans la barre d’outils).

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2011
    Messages : 28
    Par défaut
    Oui, en effet j'étais perdu...
    Merci pour la réponse!


  4. #4
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2011
    Messages : 28
    Par défaut
    Je passe aux problèmes suivants:

    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
    #!/usr/bin/python
    #-*- coding: iso-8859-15 -*-
     
    import re
    import csv
    import sys
     
     
    fichier = open('AvecDesAccents.txt','r')
     
    for ligne in fichier.readlines():
        print ligne.decode('latin-1')
        if re.search(unicode('là','latin-1') ,unicode(ligne,'latin-1')) is not None:
            print 'il y a des à'.decode('latin-1')
            print re.findall('là'.decode('latin-1') ,ligne.decode('latin-1'))
    Et la réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     þf i c h i e r   t e s t
     
       é   à   ç   è
     
     v o i l à !
     
     e t
     
     1 9 / 1 0 / 2 0 1 2 | V o t r e * o r d r e * p e r m a n e n t   - -   S O * 6
     1 0 - 8 0 5 8 0 4 4 - 5 4   B E 1 1 * 2 1 0 * 0 4 6 3 5 5 9 * 4 8 * M M E   I N
     G E N B L E E K - O O S T E R L I N C K * B E   C o m : * E P A R G N E   D a t
     e * v a l e u r : * 1 9 / 1 0 / 2 0 1 2 | - 2 5 5 , 1 1
    Alors que le fichier source contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     þf i c h i e r   t e s t
     
       é   à   ç   è
     
     v o i l à !
     
     e t
     
     1 9 / 1 0 / 2 0 1 2 | V o t r e * o r d r e * p e r m a n e n t   - -   S O * 6
     1 0 - 8 0 5 8 0 4 4 - 5 4   B E 1 1 * 2 1 0 * 0 4 6 3 5 5 9 * 4 8 * M M E   I N
     G E N B L E E K - O O S T E R L I N C K * B E   C o m : * E P A R G N E   D a t
     e * v a l e u r : * 1 9 / 1 0 / 2 0 1 2 | - 2 5 5 , 1 1
    Problème de codage ?

    Merci encore.

  5. #5
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Ben, vu que vous faites une recherche sur “là”, et que votre fichier de test ne contient aucun “là” (tout au plus un “l à”, notez l’espace)…

    Mais vous faites une drôle de salade avec vos encode/decode/unicode à tout va… Autant travailler entièrement en unicode, non*?

    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
    #!/usr/bin/python
    #-*- coding: iso-8859-15 -*-
     
    import re
    import csv
    import sys
     
     
    fichier = open('AvecDesAccents.txt','r')
     
    for ligne in fichier.readlines():
        ligne = ligne.decode('latin-1')
        print ligne
        if re.search(u'là' , ligne) is not None:
            print u'il y a des là'
            print re.findall(u'là' ,ligne)

  6. #6
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2011
    Messages : 28
    Par défaut
    Merci pour la réponse, mais dans le fichier source il n'y a pas de blanc (visible).
    C'est le copier coller qui en rajoute...

    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
    #!/usr/bin/python
    #-*- coding: iso-8859-15 -*-
     
    import re
    import csv
    import sys
     
     
    fichier = open('AvecDesAccents.txt','r')
     
    for ligne in fichier.readlines():
        ligne= ligne.decode('latin-1')
        print ligne
        if re.search(u'l.*à' ,ligne) is not None:
            print u'il y a des l..à'
        if re.search(u'l à' ,ligne) is not None:
            print u'il y a des l à'
    donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     þf i c h i e r   t e s t
     
       é   à   ç   è
     
     v o i l à !
     
    il y a des l..à
     e t
     
     1 9 / 1 0 / 2 0 1 2 | V o t r e * o r d r e * p e r m a n e n t   - -   S O * 6
     1 0 - 8 0 5 8 0 4 4 - 5 4   B E 1 1 * 2 1 0 * 0 4 6 3 5 5 9 * 4 8 * M M E   I N
     G E N B L E E K - O O S T E R L I N C K * B E   C o m : * E P A R G N E   D a t
     e * v a l e u r : * 1 9 / 1 0 / 2 0 1 2 | - 2 5 5 , 1 1
    Je suis en effet perdu... et donc encore merci

Discussions similaires

  1. Problème accent mysql
    Par staive dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 01/02/2006, 19h11
  2. [C#] Problème accents avec HttpWebRequest
    Par aucean dans le forum C#
    Réponses: 2
    Dernier message: 03/12/2005, 14h40
  3. problème accent sous tomcat
    Par julien_lesbegueries dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 06/10/2005, 14h33
  4. [JDBC]Problème Accent MySQL depuis DB browser dans eclipse
    Par chpruvos dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/08/2005, 14h14
  5. [Zip] Problème accent et zip
    Par MrEddy dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 04/06/2004, 11h40

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