Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

9 réponses
Avatar
Denis Bitouzé
Bonjour,

mon souci est r=E9sum=E9 par la session suivante :

>>> a=3D"bonjour les enfants"
>>> print a.title()
Bonjour Les Enfants
>>> b=3D"j'ai re=E7u les v=E9los sur la t=EAte"
>>> print b.title()
J'Ai Re=E7U Les V=E9Los Sur La T=EATe
>>>

Je voudrais bien s=FBr que les lettres qui suivent des caract=E8res non
ascii 7 bits ne soient pas mis en capitales.

Merci d'avance pour tout coup de main...
--=20
Denis

9 réponses

Avatar
Christophe Cavalaria
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







Avatar
hg
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





Avatar
Christophe Cavalaria
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 :/






Avatar
Denis Bitouzé
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

Avatar
Pierre Maurette
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


Avatar
Denis Bitouzé
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

Avatar
Christophe
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 ;)


Avatar
Maric Michaud
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.



Avatar
Bitouzé Denis
Bonjour,

je voulais tous vous remercier pour les réponses que vous m'avez
faites.
--
Denis