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 :

Encodage des fichiers et programme


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Etudiante
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Par défaut Encodage des fichiers et programme
    Bonjour;

    J'ai un programme où je dois extraire tous les verbes au passé composé, mon fichier de base est un fichier .chat, en le copiant en Notpad++ j'ai découvert q'il est codé en ANSI j'ai fais la conversion en UTF-8 et le l'ai enregistré en .txt. Cependant dans mon programme je dois récupérer les verbes trouvés dans le texte et les comparer avec les verbes que je dois chercher (stockés dans une liste de string). Pour ceci j'ai ajouté # -*- coding: utf-8 -*- mais il n'arrive pas à comparer les verbes puisque il considère ils ont pas le même encodage. Merci pour votre réponse.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    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 720
    Par défaut
    Salut,
    L'en-tête "# -*- coding: utf-8 -*-" ne s'applique qu'aux scripts Python.
    Ce sont des fichiers "texte" utilisés par votre éditeur favori et l'interpréteur Python. S'ils contiennent des caractères accentués, il faut indiquer "l'encoding" qui devra être utilisé pour les stocker et les afficher.

    j'ai découvert q'il est codé en ANSI
    L'ANSI est un institut américain qui s'occupe de définir les "standards". Un équivalent en France serait l'AFNOR. Dans le contexte, çà ne veut pas dire grand chose. Cela n'a aucune importance: vous débutez! Ceci dit, si vous voulez qu'on comprenne ce que vous faites: postez du code et indiquez la version de Python utilisée.

    Cependant dans mon programme je dois récupérer les verbes trouvés dans le texte et les comparer avec les verbes que je dois chercher (stockés dans une liste de string)
    Poster du code sert aussi à se caler à votre niveau:

    Si j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import io
    from collections import Counter
    verbes = [ 'mot1', 'mot2', ...]
    data = Counter(io.open('ficher', 'r', encoding='utf-8').read().split())
    print ([ for m in verbes if m in data ])
    Ca fera peut être ce que vous attendez mais, pour vous, çà ne sera que du charabia.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  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,

    ANSI: c'est comme ça que Microsoft appelle son encodage Windows (cp1252). Exemple: dans son éditeur de texte "bloc-notes", si on fait "enregistrer sous", l'encodage ANSI est proposé.

    Python sait bien faire les conversions entre 2 encodages, en passant systématiquement par l'unicode interne. Par exemple:

    ch = chaine encodée en cp1252, on la veut en urf-8:

    => ch.decode('cp1252').encode('utf-8')

    Dans cet exemple, ch.decode('cp1252') convertit la chaine en unicode interne. C'est d'ailleurs sous cette forme que les chaines peuvent être traitées le plus facilement en mémoire. Ainsi, si on veut comparer ch1 encodé en 'cp1252' (encodage Windows) et ch2 encodé en 'cp850' (encodage de la console DOS cmd.exe):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ch1.decode('cp1252')==ch2.decode('cp850'):
        ....
    Mais, bien sûr, Python ne peut pas deviner en quel encodage se trouve des chaines récupérées quelque part. Il faut essayer plusieurs encodage jusqu'à ce que ça marche. Dans certains cas, on peut utiliser un éditeur hexa qui permet de lire le fichier octet par octet pour voir comment un 'é', par exemple, est encodé, et en déduire l'encodage.

Discussions similaires

  1. [0.9.2][Zend_Translate] Encodage des fichier TMX
    Par Yoteco dans le forum Autres composants
    Réponses: 5
    Dernier message: 10/05/2007, 18h51
  2. Comment modifier l'encodage des fichiers sources ?
    Par ChPr dans le forum NetBeans
    Réponses: 2
    Dernier message: 01/05/2007, 21h16
  3. Organisation des fichiers du programme
    Par greg13 dans le forum Linux
    Réponses: 2
    Dernier message: 16/03/2007, 15h25
  4. encodage des fichier .html
    Par rasleboldesid dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 30/08/2006, 07h23
  5. [Eclipse 2.1] Encodage des fichiers pour un projet
    Par _-Sky-_ dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/05/2005, 22h26

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