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 :

Tenir compte des caractères accentués [Python 3.X]


Sujet :

Python

  1. #1
    Membre régulier Avatar de scalpel
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Novembre 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2008
    Messages : 150
    Points : 94
    Points
    94
    Par défaut Tenir compte des caractères accentués
    Bonjour à tous,

    Dans pas mal d'exercices du "Swinnen" l'auteur précise "Tâchez de tenir compte des caractères accentués".
    N'ayant pour le moment rencontré aucune difficulté avec ces caractères, je me demande si je ne suis pas en train de passer à cotés de quelque chose d'important.
    Débutant en janvier 2024 l'apprentissage d'un langage de programmation et n'étant pas particulièrement doué, soyez indulgents.

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    bonjour

    Sans contexte cela ne veut rien dire ...
    Pour une recherche, parfois on désire remonter "déménage" et "déménagé" ?
    Dans une url, parfois le texte est encodé (voir wikipedia)
    $moi= ( !== ) ? : ;

  3. #3
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    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 : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Bonjour,

    C'est une habitude des anciens développeurs qui à la peau dure, car avec python 2, on avait beaucoup de problématiques liées à l'encodage des caractères, cependant c'est beaucoup moins le cas actuellement.

    Assurez-vous que vos fichiers sources sont encodés en UTF-8, ce qui est l'encodage standard pour Python 3. Cela garantit une bonne gestion des caractères accentués et des caractères de langues étrangères.

    Bien que Python 3 utilise UTF-8 par défaut, il peut être utile de déclarer explicitement l'encodage en haut de vos fichiers Python, surtout si vous travaillez avec Python 2 ou si votre code doit être portable.

    La comparaison et le tri de chaînes de caractères contenant des accents peuvent ne pas se comporter comme prévu si l'on ne tient pas compte de l'ordre lexicographique et de la collation spécifiques à la langue. Utilisez des bibliothèques comme locale ou unicodedata pour gérer ces cas de manière plus appropriée.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  4. #4
    Membre régulier Avatar de scalpel
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Novembre 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2008
    Messages : 150
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par papajoker Voir le message
    ... Sans contexte cela ne veut rien dire ...
    Voici deux exercices ou l'auteur le précise.

    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
    # fonction trouve() qui fera exactement le contraire de ce que fait l'opérateur d'indexage (c'est-à-dire les crochets [ ])
    # Au lieu de partir d'un index donné pour retrouver le caractère correspondant, cette fonction devra retrouver l'index 
    # correspondant à un caractère donné. En d'autres termes, il s'agit d'écrire une fonction qui attend deux arguments : le nom
    # de la chaîne à traiter et le caractère à trouver. La fonction doit fournir en retour l'index du premier caractère de ce
    # type dans la chaîne. Ainsi par exemple, l'instruction : print(trouve("Juliette & Roméo", "&")) devra afficher : 9
    # Attention : il faut penser à tous les cas possibles. Il faut notamment veiller à ce que la fonction renvoie une valeur
    # particulière (par exemple la valeur -1) si le caractère recherché n'existe pas dans la chaîne traitée. Les caractères
    # accentués doivent être acceptés.
     
    # Améliorez la fonction de l'exercice précédent en lui ajoutant un troisième paramètre : l'index à partir duquel la recherche
    # doit s'effectuer dans la chaîne. Ainsi par exemple, l'instruction :print(trouve ("César & Cléopâtre", "r", 5)) devra afficher
    # : 15 (et non 4 !).
     
    # Fonction
     
    def trouve(chaine,caractere,index):
        'retourne l\'index d\'un caractère dans une chaine'
        while index <= len(chaine):
            try:
                if chaine[index] == caractere:
                    break
                index+=1
            except:
                index=-1
                break
        return index
     
    # main
    chaine=input('Entrer la chaine de carractère: ')
    carractere=input('Entrer le carractère à cibler: ')
    index=int(input('Index à partir duquel commencer la recherche: '))
    print('L\'index de ce carractère est: ',trouve(chaine, carractere, index))
    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
    # Écrivez une fonction estUneMaj() qui renvoie « vrai » si l'argument transmis est une majuscule.
    # Tâchez de tenir compte des majuscules accentuées !
     
    #fonction
    def estUneMaj(carractere):
        if carractere.isupper():
            reponse='vrai'
        else:
            reponse='faux'
        return reponse
     
    # main
    chaine='12F5T68Îhj2'
    for carractere in chaine:
        print(carractere+' - '+ estUneMaj(carractere))
    Débutant en janvier 2024 l'apprentissage d'un langage de programmation et n'étant pas particulièrement doué, soyez indulgents.

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    C'est plutôt l'inverse
    Il dit simplement qu'un caractère accentué est différent du même non accentué. Tu connais la "table ascii" c'est donc l'usage normal sur les caractères

    # Tâchez de tenir compte des majuscules accentuées !
    Normal, car lui il ne connait pas str.isupper(), il fait donc: si caractère est dans cette liste (.....). Et par conséquent, à nous de mettre les caractères accentués dans cette liste

    EDIT: il devait préciser : chaine en français. Sinon sa solution n'est pas bonne Ä pas dans sa liste (et si on ajoute le russe... И́ ...)
    $moi= ( !== ) ? : ;

  6. #6
    Membre régulier Avatar de scalpel
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Novembre 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2008
    Messages : 150
    Points : 94
    Points
    94
    Par défaut
    Merci pour vos retours. 👍

    Je n'ai donc rien loupé d'important.
    Débutant en janvier 2024 l'apprentissage d'un langage de programmation et n'étant pas particulièrement doué, soyez indulgents.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/03/2008, 15h49
  2. Recherche sans tenir compte des accents
    Par killerjeff dans le forum Access
    Réponses: 6
    Dernier message: 27/01/2007, 10h19
  3. Réponses: 2
    Dernier message: 11/01/2007, 11h28
  4. Réponses: 1
    Dernier message: 17/08/2006, 20h27
  5. Ne pas tenir compte des accents dans une requete
    Par zamanika dans le forum Installation
    Réponses: 8
    Dernier message: 08/11/2004, 19h49

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