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 :

Les caractères accentués [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 4
    Par défaut Les caractères accentués
    Bonjour,

    Je suis débutante en Python, j'ai un exercice qui me demande de coder une fonction pluriel(mot), qui fonctionnerai avec n'importe type de mot (nom, adjectif, ...). Mais le problème, est que quand le mot comprend un accent, cela me retourne, par exemple ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pluriel('régal')
    'r\xc3\xa9gaux'
    Existe - il une manière de convertir 'r\xc3\xa9gaux' à 'régals' sans passer par print.

    voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def pluriel(mot):
        al_ou_eau_eu_au = 'régal banal canal cheval mal arsénal idéal final cheval bocal hopîtal amiral cardinal général journal métal minéral canal animal littoral local  tribunal piédestal  bijou caillou chou genou hibou joujou pou ripou chouchou cadeau oiseaux bureau bateau sceau chapeau tableau chameau peau veau drapeau panneau carreau vaisseau berceau feu lieu milieu jeu essieu dieu eau fauconneau neveu aveu voeu boyau noyau joyau bestiau au matériau esquimau préau ciel vieil rideau'.split()
        ail = 'travail bétail bail corail émail fermail gemmail soupirail ventrail vantail vitrail prairail'.split()
        s = 'plus avant comment os trop les la tous donc vos allez est plutôt tant par que parmi avoir dix deux trois quatre cinq six sept huit neuf dix des miens tiens siens yeux je en à a sa çà dans soit sur quand là ailleurs vieux ont voir ainsi sous vous nous comme plusieurs avec cette certes rien qui aussi voici voilà puisque où été bien lors alors ce hors et tu une un et pour France pays jésus prix gaz brebis cas fils héros houx temps index lynx matelats nez puits quartz quiz rabais rhinocéros sas ci souris mépris taux sont mais'.split()
        if mot in al_ou_eau_eu_au : return mot[0 : -1] + 'ux'
        if mot in ail : return mot[0 : -2] + 'ux'
        if mot in s : return mot
        else : return mot + 's'
    Merci à toutes les personnes qui essayerons de m'aider

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par Nicolaîî Voir le message
    Existe - il une manière de convertir 'r\xc3\xa9gaux' à 'régals' sans passer par print.
    Utiliser Python3.
    Ca fait 10 ans que cette nouvelle version est sortie. Quelle raison avez vous d'apprendre Python avec une version 2 et avoir des soucis qui n'existent plus?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 4
    Par défaut
    Bonjour,

    C'est exactement ce que j'ai demander au prof, mais il veut absolument qu'on code avec Python2.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Si vous voyez 'r\xc3\xa9gaux', c'est que vous affichez le retour de la fonction via une console Python interactive i.e. un mode utilisé pour mettre au point les programmes.
    Pour que çà s'affiche de façon plus lisible, il va falloir connaître l'encoding de la sortie, transformer votre chaîne de caractères, puis écrire le résultat sur la sortie.
    Pourquoi voulez vous écrire une fonction qui pourrait remplacer le "print" que vous avez déjà?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par wiztricks Voir le message
    Ca fait 10 ans que cette nouvelle version est sortie. Quelle raison avez vous d'apprendre Python avec une version 2 et avoir des soucis qui n'existent plus?
    Ben moi, par exemple, j'utilise QGis (la librairie, pas le logiciel). Et malheureusement, cette librairie n'est pas encore disponible sous P3...

    Citation Envoyé par Nicolaîî Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pluriel('régal')
    'r\xc3\xa9gaux'
    Existe - il une manière de convertir 'r\xc3\xa9gaux' à 'régals' sans passer par print.
    Il faut se méfier du Python console (celui qui affiche ">>>" et qui permet de taper du Python direct) car quand on demande un truc sans le récupérer, alors le truc repart à l'écran (exemple >>> 2+3 => on voit apparaitre "5" sur la ligne du dessous) mais Python console affiche le truc de façon "native", et cela induit parfois des erreurs (surtout quand on joue avec l'encoding).
    Alors que si on passe par la fonction print, cette fonction tente d'interpréter les caractères en fonction de l'encoding du source. Essaye par exemple à la place print(pluriel("régal")).

    De même, si on utilise un script Python à la place du Python console, alors 1) les instructions sans effet (comme 2+3) ne partent pas à l'écran mais dans le néant de l'exécution et si on veut les avoir à l'écran, il faut alors explicitement demander un print(2+3).

    Donc recopie ce code source dans un fichier "toto.py"
    Code python : 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/env python
    # coding: utf8
    def pluriel(mot):
    	al_ou_eau_eu_au = 'régal banal canal cheval mal arsénal idéal final cheval bocal hopîtal amiral cardinal général journal métal minéral canal animal littoral local  tribunal piédestal  bijou caillou chou genou hibou joujou pou ripou chouchou cadeau oiseaux bureau bateau sceau chapeau tableau chameau peau veau drapeau panneau carreau vaisseau berceau feu lieu milieu jeu essieu dieu eau fauconneau neveu aveu voeu boyau noyau joyau bestiau au matériau esquimau préau ciel vieil rideau'.split()
    	ail = 'travail bétail bail corail émail fermail gemmail soupirail ventrail vantail vitrail prairail'.split()
    	s = 'plus avant comment os trop les la tous donc vos allez est plutôt tant par que parmi avoir dix deux trois quatre cinq six sept huit neuf dix des miens tiens siens yeux je en à a sa çà dans soit sur quand là ailleurs vieux ont voir ainsi sous vous nous comme plusieurs avec cette certes rien qui aussi voici voilà puisque où été bien lors alors ce hors et tu une un et pour France pays jésus prix gaz brebis cas fils héros houx temps index lynx matelats nez puits quartz quiz rabais rhinocéros sas ci souris mépris taux sont mais'.split()
    	if mot in al_ou_eau_eu_au : return mot[0 : -1] + 'ux'
    	if mot in ail : return mot[0 : -2] + 'ux'
    	if mot in s : return mot
    	else : return mot + 's'
    # def pluriel()
     
    import sys
     
    for mot in sys.argv[1:]: print(pluriel(mot))

    Ensuite, tu l'appelles de cette façon: ./toto.py cheval toto oeuf travail ... (ce que tu veux).

    PS: attention, "cheval" est deux fois dans ta liste. Essaye de trier tes mots par ordre alphabétique pour pouvoir trouver plus facilement ces redondances...
    PS2: "oiseaux" est déjà au pluriel dans ta liste...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    QGIS va sortir sa version 3.0 bientôt ? Parce-qu'ils annoncent la compatibilité avec Qt5 et Python 3...

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

Discussions similaires

  1. [SQL-Server] ms sql server et php : problème avec les caractères accentués
    Par stephane9422 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/12/2005, 17h45
  2. [AJAX] Problèmes avec les caractères accentués
    Par marti dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 26/10/2005, 14h10
  3. Réponses: 5
    Dernier message: 04/09/2005, 12h34
  4. Réponses: 6
    Dernier message: 14/07/2005, 14h25
  5. [PostgreSQL] Les caractères accentués ?
    Par yacomor dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/02/2003, 16h30

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