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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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.

+ 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