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 :

Probleme avec str.format() [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Par défaut Probleme avec str.format()
    Bonjour,
    J'ai un petit souci de formatage :
    (note : seance.djour est une datetime et égale à 9 février 2015)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lib_sea = "Seance de {0} h programmee le {1:%A %d %B %Y}".format(seance.duree, seance.djour)
    Fonctionne bien : pas d'accent sur - Seance - et février apparait bien avec l'accent

    J'ajoute les accents ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lib_sea = "Séance de {0} h programmée le {1:%A %d %B %Y}".format(seance.duree, seance.djour)
    la sortie :
    Séance de 3.0 h programmée le lundi 09 février 2015
    Même si ce n'est pas beau la sortie me parait cohérente ...

    J'ajoute le préfixe u"" pour transformer la chaine en unicode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lib_sea = u"Séance de {0} h programmée le {1:%A %d %B %Y}".format(seance.duree, seance.djour)
    Là j'ai une exception UnicodeDecodeError avec datetime : 9 février 2015 (avec donc un accent). Par contre, avec une autre date sans accent, l'affichage est correct.
    Grrrrr !

    La solution (provisoire) que j'ai trouvé est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    import locale
    import time
    locale.setlocale(locale.LC_TIME,'')
    pref_enc = locale.getpreferredencoding()
    lib_sea = u"Séance de {0} h programmée le ".format(seance.duree) + seance.djour.strftime('%A %d %B %Y').decode(pref_enc)
    Mais je perds la souplesse de la syntaxe de str.format() ...

    Question, existe t-il un moyen de contourner le phénomène et d'utiliser, quand même, avec une chaine principale en unicode et un résultat du formatage des paramètres avec des accents (donc en unicode)
    Merci d'avance pour vos pistes.
    @+

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

    Citation Envoyé par Triton972 Voir le message
    Question, existe t-il un moyen de contourner le phénomène et d'utiliser, quand même, avec une chaine principale en unicode et un résultat du formatage des paramètres avec des accents (donc en unicode)
    C'est pour corriger de tels soucis qu'a été créé Python3.

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

  3. #3
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2008
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 330
    Par défaut
    Ok wiztricks, merci pour l'information
    Il est peut être temps de penser à migrer vers Python 3 alors ...

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

Discussions similaires

  1. Probleme avec le format DATE sur ORACLE
    Par B&B dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/02/2008, 17h55
  2. Probleme avec Push Format et Read
    Par Adema05 dans le forum Lisp
    Réponses: 0
    Dernier message: 31/10/2007, 12h21
  3. probleme avec la format date dans ireport
    Par 7rouz dans le forum iReport
    Réponses: 3
    Dernier message: 09/07/2007, 08h54
  4. probleme avec le format de la date
    Par stan30160 dans le forum Access
    Réponses: 15
    Dernier message: 19/06/2006, 11h49
  5. [Free Pascal] Problème avec 'str'
    Par TheBigMac dans le forum Free Pascal
    Réponses: 1
    Dernier message: 12/04/2006, 21h56

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