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:
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:
lib_sea = "Séance de {0} h programmée le {1:%A %d %B %Y}".format(seance.duree, seance.djour)
la sortie :
Citation:
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:
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:
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.
@+