.title() et caractères non ascii 7 bits

Le
Denis Bitouzé
Bonjour,

mon souci est résumé par la session suivante :

>>> a="bonjour les enfants"
>>> print a.title()
Bonjour Les Enfants
>>> b="j'ai reçu les vélos sur la tête"
>>> print b.title()
J'Ai ReçU Les VéLos Sur La TêTe
>>>

Je voudrais bien sûr que les lettres qui suivent des caractères non
ascii 7 bits ne soient pas mis en capitales.

Merci d'avance pour tout coup de main
--
Denis
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christophe Cavalaria
Le #626044
Denis Bitouzé wrote:

Bonjour,

mon souci est résumé par la session suivante :

a="bonjour les enfants"
print a.title()
Bonjour Les Enfants



b="j'ai reçu les vélos sur la tête"
print b.title()
J'Ai ReçU Les VéLos Sur La TêTe








Je voudrais bien sûr que les lettres qui suivent des caractères non
ascii 7 bits ne soient pas mis en capitales.

Merci d'avance pour tout coup de main...


Utilise des chaînes Unicode.

b = u"j'ai reçu les vélos sur la tête"
print b.title()
J'Ai Reçu Les Vélos Sur La Tête







hg
Le #626043
Christophe Cavalaria wrote:

Denis Bitouzé wrote:

Bonjour,

mon souci est résumé par la session suivante :

a="bonjour les enfants"
print a.title()
Bonjour Les Enfants



b="j'ai reçu les vélos sur la tête"
print b.title()
J'Ai ReçU Les VéLos Sur La TêTe








Je voudrais bien sûr que les lettres qui suivent des caractères non
ascii 7 bits ne soient pas mis en capitales.

Merci d'avance pour tout coup de main...


Utilise des chaînes Unicode.

b = u"j'ai reçu les vélos sur la tête"
print b.title()
J'Ai Reçu Les Vélos Sur La Tête





Mais et pour le 'A' de j'ai ?

Sinon depuis un autre lien - qui semble régler le problème:

def Title(words):
return ' '.join([x.capitalize() for x in words.split()])


hg





Christophe Cavalaria
Le #626042
hg wrote:

Christophe Cavalaria wrote:

Denis Bitouzé wrote:

Bonjour,

mon souci est résumé par la session suivante :

a="bonjour les enfants"
print a.title()
Bonjour Les Enfants



b="j'ai reçu les vélos sur la tête"
print b.title()
J'Ai ReçU Les VéLos Sur La TêTe








Je voudrais bien sûr que les lettres qui suivent des caractères non
ascii 7 bits ne soient pas mis en capitales.

Merci d'avance pour tout coup de main...


Utilise des chaînes Unicode.

b = u"j'ai reçu les vélos sur la tête"
print b.title()
J'Ai Reçu Les Vélos Sur La Tête





Mais et pour le 'A' de j'ai ?


Le comportement de title est ici conforme aux specs : "words start with
uppercase characters, all remaining cased characters have lowercase."

"j'" est un premier mot et "ai" est un deuxième moi. Peut-être pas conforme
aux règles de capitalisation de titre suivant les normes typographiques
françaises (pour ce que j'en sais) mais au moins c'est simple et ça fait ce
à quoi on s'attend tant qu'on ne lui en demande pas trop :p

Sinon depuis un autre lien - qui semble régler le problème:

def Title(words):
return ' '.join([x.capitalize() for x in words.split()])


Mais cela pose toujours des problèmes sur les chaînes un peu moins bien
formées comme "j' ai reçu" ou d'autre problèmes du même genre avec des ".",
des "," et des " " mal placés autour :/






Denis Bitouzé
Le #625796
Le Sun, 3 Jun 2007 22:42:42 +0200

Merci d'avance pour tout coup de main...


Je crois que je vais m'orienter vers la solution de hg (le python est
exécuté sur un serveur où est hébergé mon site sous Plone)...

Bien que j'ai remercié à l'avance, je vous remercie néanmoins tous de ux
postérieurement :)
--
Denis

Pierre Maurette
Le #625791
Le Sun, 3 Jun 2007 22:42:42 +0200

Merci d'avance pour tout coup de main...


Je crois que je vais m'orienter vers la solution de hg (le python est
exécuté sur un serveur où est hébergé mon site sous Plone)...

Bien que j'ai remercié à l'avance, je vous remercie néanmoins tous deux
postérieurement :)


Comment souhaitez-vous que soit transformé: "j'ai reçu l'avion sur la
tête" ?

--
Pierre Maurette


Denis Bitouzé
Le #625790
Le Mon, 04 Jun 2007 05:43:41 +0200

Comment souhaitez-vous que soit transformé: "j'ai reçu l'avion sur la
tête" ?


C'est une bonne question finalement ; a priori, j'aimerais que cela
soit transformé en :

« J'ai Reçu L'Avion Sur La Tête (Ouille Ça Fait Mal) »

ce qui est d'une logique qui, vous en conviendrez, vous échappe...
autant qu'à moi ;) et qui requiert un minimum d'intelligence
artificielle !

Mais, le pire, c'est que j'aimerais aussi que : « j'ai reçu l'avion sur
la tête à château-chinon » devienne (sans rire cette fois) :

« J'ai Reçu L'Avion Sur La Tête À Château-Chinon »

ce que la solution de hg ne permet pas...
--
Denis

Christophe
Le #621129
Le Sun, 3 Jun 2007 22:42:42 +0200

Merci d'avance pour tout coup de main...


Je crois que je vais m'orienter vers la solution de hg (le python est
exécuté sur un serveur où est hébergé mon site sous Plone)...

Bien que j'ai remercié à l'avance, je vous remercie néanmoins tous deux
postérieurement :)


Blague à part (j'insiste) Même si tu choisis la solution de hg qui à
l'avantage de pouvoir coller plus aux règles de typo, je conseille quand
même fortement de passer par des chaînes unicode parceque les chaînes
"ascii 8 bit" c'est le mal et une source de bugs sans fin ! Ce n'est pas
pour rien que dans Python 3000, toutes les chaînes seront en Unicode
comme en Java ;)


Maric Michaud
Le #621128
Le Sun, 3 Jun 2007 22:42:42 +0200

Merci d'avance pour tout coup de main...


Je crois que je vais m'orienter vers la solution de hg (le python est
exécuté sur un serveur où est hébergé mon site sous Plone)...

Bien que j'ai remercié à l'avance, je vous remercie néanmoins tous deux
postérieurement :)


Blague à part (j'insiste) Même si tu choisis la solution de hg qui à
l'avantage de pouvoir coller plus aux règles de typo, je conseille quand
même fortement de passer par des chaînes unicode parceque les chaînes
"ascii 8 bit" c'est le mal et une source de bugs sans fin ! Ce n'est pas
pour rien que dans Python 3000, toutes les chaînes seront en Unicode
comme en Java ;)



De toute façon c'est l'encodage de Plone, donc la question devrait même
pas se poser.



Bitouzé Denis
Le #625342
Bonjour,

je voulais tous vous remercier pour les réponses que vous m'avez
faites.
--
Denis
Publicité
Poster une réponse
Anonyme