web-dev-qa-db-fra.com

python capitalize () sur une chaîne commençant par un espace

J'utilisais la méthode de capitalisation sur certaines chaînes dans Python et l'une des chaînes commence par un espace:

phrase = ' Lexical Semantics'

phrase.capitalize() renvoie la 'sémantique lexicale' en minuscules. Pourquoi donc?

22
NLPer

C'est le comportement répertorié :

Renvoie une copie de la chaîne avec son premier caractère en majuscule et le reste en minuscule.

Le premier caractère est un espace, l'espace est inchangé, le reste en minuscule.

Si vous souhaitez tout mettre en majuscules, consultez str.upper() ou str.title() pour la première lettre de chaque mot.

>>> phrase = 'lexical semantics'
>>> phrase.capitalize()
'Lexical semantics'
>>> phrase.upper()
'LEXICAL SEMANTICS'
>>> phrase.title()
'Lexical Semantics'

Ou, si c'est juste un problème avec l'espace:

>>> phrase = ' lexical semantics'
>>> phrase.strip().capitalize()
'Lexical semantics'
46
Gareth Latty

.capitalize() met en majuscule le premier caractère ... qui est un espace :) Chaque autre caractère est mis en minuscule.

3
Joe

C'est parce que le premier caractère est un espace, pas une lettre.

2
Daniel A. White