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 :

python 2.7.3 UnicodeWarning


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 90
    Par défaut python 2.7.3 UnicodeWarning
    Bonjour a tous

    pour charger un fichier .txt j'ai fait ça


    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
     
     
    def charge_fichier(nomFile,cpt_doc):
        global nb_doc
        f=codecs.open(nomFile,'r','utf-8')
        if(not f):return 0;
        nb_doc+=1;
        t=f.read()
        t=t.lower()
        a=t.split()
        for mot in a:
            if(not (mot,cpt_doc) in freq0 ):
                freq0[mot,cpt_doc]=a.count(mot)
                n0[mot]+=1
        f.close()
        for (mot ,doc) in freq0 :
            poid0[mot,doc]=freq0[mot,doc]*log(nb_doc/n0[mot]+1,10)
    ##      bool
        index_bool(indexBoolean_0,a,cpt_doc);
     
        a=[porteur.stem(x)for x in a if not x in ignored_words]
        for mot in a:
            if(not (mot,cpt_doc) in freq1 ):
                freq1[mot,cpt_doc]=a.count(mot)
                n1[mot]+=1
        f.close()
        for (mot ,doc) in freq1 :
            poid1[mot,doc]=freq1[mot,doc]*log(nb_doc/n1[mot]+1,10)
     
        index_bool(indexBoolean_1,a,cpt_doc);
     
        return 1;
    mais une erreur UnicodeWarning s'affiche dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a=[porteur.stem(x)for x in a if not x in ignored_words]

    comme suite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     a=[porteur.stem(x)for x in a if not x in ignored_words]
    UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal


    pour éviter cette erreur j'ai enregistré le fichier en UTF-8 ''notpade++''

    et j'ai fait ça aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    # -*- coding: utf-8 -*-
    import codecs
    mais toujours la meme erreur s'affiche

    Merci pour vos repense

  2. #2
    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,

    Ce qui est lu avec codecs.open est en unicode. Il faudrait donc voir quel est l'encodage de ignored_words.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 90
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    Ce qui est lu avec codecs.open est en unicode. Il faudrait donc voir quel est l'encodage de ignored_words.

    Merci pour votre repense

    lignored_words est un fichier .txt avec un encodage UTF-8 (sans BOM)

    alors comment je peut régler le problème ?

    Merci

  4. #4
    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
    Citation Envoyé par khaled87 Voir le message
    alors comment je peut régler le problème ?
    En le lisant aussi avec codecs.open(..., 'r', 'utf-8') pour qu'il soit aussi en unicode en mémoire.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 90
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    En le lisant aussi avec codecs.open(..., 'r', 'utf-8') pour qu'il soit aussi en unicode en mémoire.


    mais si je veut lire mon document charger avec utf-8 sans BOM ?

  6. #6
    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
    Si tu veux laisser "ignored_words" en 'utf-8', tu peux aussi convertir le 'x' de "if not x in ignored_words" en utf-8 comme suit: "if not x.encode('utf-8') in ignored_words".

    L'objectif, pour répondre au warning, est que la condition 'in' se fasse entre des chaines ayant le même encodage.

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 90
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Si tu veux laisser "ignored_words" en 'utf-8', tu peux aussi convertir le 'x' de "if not x in ignored_words" en utf-8 comme suit: "if not x.encode('utf-8') in ignored_words".

    L'objectif, pour répondre au warning, est que la condition 'in' se fasse entre des chaines ayant le même encodage.

    tyrtamos je vous remerci infiniment pour vos conseille ,enfin ça marche trés bien

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

Discussions similaires

  1. python 2.7 UnicodeWarning: inégalité
    Par Luke spywoker dans le forum Général Python
    Réponses: 3
    Dernier message: 02/06/2012, 23h37
  2. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  3. module .so pour python... ?!
    Par totoetlititi dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 09/03/2004, 14h51
  4. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59

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