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 :

'Ï' i tréma problème de reconnaissance


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut 'Ï' i tréma problème de reconnaissance
    Bonjour,

    Je travaille sur un script qui doit reconnaitre des noms dans un fichiers pour en retourner leur description.

    Voici le script :
    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
     
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
     
    import io
     
    def ajoute_description(nom):
    	ajoute=0
    	description = ''
    	fichier_description = io.open('noms_description.txt','r', encoding='utf-8')
    	for ligne in fichier_description:
    		if (('[END]' in ligne) and ajoute) :break
    		if ajoute : description+=ligne
    		if nom in ligne :
    			ajoute=1
    			print 'work'
    	fichier_description.close()
    	return description
    Tout marche bien pour les noms comme 'SOKHNA', 'SOPHIE', 'NDIÈMÈ' ou 'MANÉ'.
    Mais rien à faire pour 'LOÏC', 'MAΪMOUNA' ou 'AΪCHA'.
    Après avoir bien vérifié l'orthographe des noms, tout me porte à penser que le 'Ï' est la source de mon problème.

    Quelqu'un aurait-il une solution ?

    Je suis sur Ubuntu 9.10 et j'utilise Python 2.6.4.

  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,

    En utf-8, le 'Ï' est en hexa C3 8F et le 'É' C3 89. Il n'y a donc aucune raison que l'un soit détecté et pas l'autre.

    Des pistes:

    - vérification que le fichier sur disque possède bien le I tréma avec le bon encodage (éditeur hexa), ou vérifier avec un 'print ligne' que les noms avec un tréma sont bien restitués.

    - dans ton code, une fois le fichier ouvert avec mention de son encodage, la variable ligne est en unicode interne (vérifie avec un 'print isinstance(ligne, unicode)'). Attention: l'unicode interne n'est pas l'utf-8. Donc, toutes les autres chaines devraient être en unicode interne aussi, sinon, tu génères des conversions cachées:

    paramètre nom transmis en unicode
    description = u''
    u'[END]'

    Voilà la vérification que j'ai faite, qui montre que le "nom in ligne" fonctionne dans tous les cas:


    ligne = u"LOÏC MAΪMOUNA AΪCHA SOKHNA SOPHIE NDIÈMÈ MANÉ"

    nom = u"SOKHNA"
    print nom in ligne
    True

    nom = u"NDIÈMÈ"
    print nom in ligne
    True

    nom = u"AΪCHA"
    print nom in ligne
    True

    [je n'ai pas mis les tag de code pour que les lettres accentuées soient bien restituées]

    Tyrtamos

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    - vérification que le fichier sur disque possède bien le I tréma avec le bon encodage (éditeur hexa),...
    Sur Linux, je n'ai trouvé que Gedex pour lire les caractère hexa, mais je ne le trouve pas très pratique; donc je n'ai pas pu vérifier correctement la valeur hexa du Ï.
    ..., ou vérifier avec un 'print ligne' que les noms avec un tréma sont bien restitués.
    J'ai fait des print ligne de mon fichiers, et les Ï sont bien restitués.
    ...(vérifie avec un 'print isinstance(ligne, unicode)')...
    "print isinstance(ligne, unicode)')" me renvoie "True" pour chaque lignes même celles contenant des Ï.
    paramètre nom transmis en unicode
    description = u''
    u'[END]'
    J'ai fait les modifications nécessaires mais la valeur de "nom in ligne" est toujours "False".
    ligne = u"LOÏC MAΪMOUNA AΪCHA SOKHNA SOPHIE NDIÈMÈ MANÉ"

    nom = u"SOKHNA"
    print nom in ligne
    True

    nom = u"NDIÈMÈ"
    print nom in ligne
    True

    nom = u"AΪCHA"
    print nom in ligne
    True
    J'ai testé ton code et il me renvoie aussi trois "True".

    J'ai aussi essayé des "str()", "unicode(var, 'utf-8')", "var.encode('utf-8')" ou encore des "var.decode('utf-8')" tout au long de la journée, tout ceci sans succès.
    J'ai bien réussi à avoir des "True" pour "nom in 'AÏCHA'" et "'AΪCHA' in ligne" mais impossible d'avoir "nom in ligne" alors que "nom=u'AÏCHA'" et qu'un "print mot, ' : ', ligne" m'a renvoyé "AÏCHA : AÏCHA".

    Je ne comprend plus rien.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    Citation:
    - vérification que le fichier sur disque possède bien le I tréma avec le bon encodage (éditeur hexa),...
    Sur Linux, je n'ai trouvé que Gedex pour lire les caractère hexa, mais je ne le trouve pas très pratique; donc je n'ai pas pu vérifier correctement la valeur hexa du Ï.
    Je me suis un peu plus à Gedex et compris comment il marchait...
    En utf-8, le 'Ï' est en hexa C3 8F
    En effet ! Après rectification, en héxa du fichier mes Ï sont reconnus correctement

    Merci beaucoup tyrtamos !!
    Je ne connaissais pas l'importance des caractère héxa. Je pensais qu'en enregistrant mon fichier description en 'utf-8', je n'aurais pas eu ce genre de problème mais apparemment ce n'est pas le cas

    Je sais que ce n'est pas ma question de départ mais que puis-je faire pour que mes fichiers soient enregistrer dans le bon encodage ? (J'utilise Gedit, dois-je changer d'éditeur de texte ???)

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

    Citation Envoyé par Orfvz Voir le message
    ... que puis-je faire pour que mes fichiers soient enregistrer dans le bon encodage ? (J'utilise Gedit, dois-je changer d'éditeur de texte ???)
    Désolé pour le délai de réponse: je n'avais pas d'ubuntu sous la main.

    J'ai regardé un peu gedit: c'est vraiment un éditeur léger. Il donne le choix entre 2 encodages à l'enregistrement (utf-8 et iso-8859-1), mais c'est tout.

    Si tu veux faire ce que tu veux en matière d'encodage, utilise plutôt un éditeur comme jEdit. C'est ce que j'utilise souvent sous Windows et j'ai vérifié qu'il existait sur ubuntu. Pour l'avoir en français, il faut faire une manip décrite dans la doc du site ubuntu. On définit l'encodage dans: utilities -> global option -> encoding.

    Il y a d'autres éditeurs possibles, et même des outils plus complets de développement (j'utilise eclipse tant sur Windows que sur linux). Regarde sur ce site, il y a des fils spécialisés sur le sujet.

    Tyrtamos

  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 tyrtamos Voir le message
    J'apprécie de plus en plus Eclipse avec pydev pour développer en Python.
    Je vais m'y mettre dès aujourd'hui.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 13
    Par défaut
    Oui en effet j'utilisais Eclipse avec pydev. Et je confirme, Eclipse est excelent.

    Le seul problème c'est qu'il est devenu très lourd chez moi avec tout les plugin que j'ai rajouté (j'utilise aussi Aptana pour le web, et je l'utilisait aussi pour des tutoriaux de C++, de C et de java)...

    Donc je l'utilise surtout quand je suis sur des projet assez lourd.

    Pour des petit script somme c'est le cas ici, je préfère un petit éditeur léger qui se lance instantanément.
    J'ai essayé Éric, Kate, Idle et Gedit. Et Gedit me plaisait le plus.
    (D'aillleurs au moment de l'enregistrement du fichier on peut rajouter d'autres modes d'encodage : 'Enregistrer sous...->Encodage des charactères->Ajouter ou Suprimer...')

    Je vais essayé jEdit.
    Et je vais peut être m'installer plusieurs Eclipse. Chacun pour un environnement de développement différent, afin d'éviter ces temps de temps de chargements si longs...
    Cela fait longtemps que j'y pense, ça serait peut être le moment

    Merci à tous pour vos conseils.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 105
    Par défaut
    Bonjour,

    Je m'excuse si je détourne un peu le fil de la discution, merci de votre compréhension.

    @tyrtamos: De rien, les infos que j'ai trouvé sur ton site mon permises de répondre à certain de mes problèmes.

    @Orfvz: J'ai eu par le passé le même problème. C'est super tous ces plugins, un par ici et l'autre par là, etc.

    Au bout du compte c'est horrible, oui j'arrivais à faire tout mais le cout du chargement était trop pénible. Sans parler de la gestion de la mise à niveau de chaque plugin ... :/

    Alors, comme je ne voulais pas terminer mon aventure avec Eclipse et que la place disque n'est pas vraiment un problème, je me suis fait plusieurs installation d'Eclipse en spécialisant chaque série de plugins installer!

    A toi de voir si cette méthode te séduit ou pas.

    Salutations.

  9. #9
    Membre confirmé Avatar de arnaudk
    Inscrit en
    Février 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 38
    Par défaut
    Intéressant en effet.

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

Discussions similaires

  1. problème de reconnaissance de date
    Par fabrice44 dans le forum Général VBA
    Réponses: 2
    Dernier message: 26/04/2007, 15h05
  2. Réponses: 8
    Dernier message: 16/11/2006, 13h31
  3. CSS, problème de reconnaissance de la feuille de style
    Par polo42 dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 05/09/2006, 13h48
  4. Problème de reconnaissance javascript vbscript
    Par mouste79 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/05/2006, 19h12
  5. [FLASH MX2004] Problème de reconnaissance des caractères
    Par Spikefreeman dans le forum Flash
    Réponses: 10
    Dernier message: 04/01/2005, 23h08

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