comment changer le cas de la première lettre d'une chaîne de caractères?
s = ['my', 'name']
Je veux changer la 1ère lettre de chaque élément en majuscules.
s = ['My', 'Name']
Vous devez vous connecter pour publier un commentaire.
s = ['my', 'name']
Je veux changer la 1ère lettre de chaque élément en majuscules.
s = ['My', 'Name']
Vous devez vous connecter pour publier un commentaire.
À la fois .capitalize() et .titre(), les changements, les autres lettres dans la chaîne de caractères en minuscules.
Ici est une simple fonction qui modifie uniquement la première lettre en majuscule, et laisse le reste inchangé.
[i[0].upper() + i[1:] for i in s]
return s[:1].upper() + s[1:]
Vous pouvez utiliser le capitalize() méthode:
Ce sera d'impression:
'naMe'.capitalize() == 'Name'
Vous pouvez utiliser
'my'.title()
qui sera de retour'My'
.Pour obtenir plus de la liste complète, tout simplement la carte sur elle comme ceci:
En fait,
.title()
rend tous les mots commencent par une majuscule. Si vous souhaitez limiter strictement la première lettre, l'utilisationcapitalize()
à la place. (Ce qui fait une différence par exemple dans "ce mot" être modifié soitThis Word
ouThis word
)str.title
est un moyen plus facile de spécifierlambda x : x.title()
.Il n'a probablement pas d'importance, mais vous pourriez vouloir utiliser ce lieu de la
capitalize()
outitle()
chaîne de méthodes, car, en plus de uppercasing la première lettre, ils ont aussi minuscules que le reste de la chaîne (et ce qui ne marche pas):Remarque: En Python 3, vous devez utiliser:
parce que
map()
retourne un itérateur qui applique une fonction à chaque élément de l'objet iterable au lieu d'unlist
comme il l'a fait en Python 2 (si vous avez à le transformer en un vous-même).if s else ''
expression? Pour éviter une concaténation de chaînes vides? Je crois qu'il est prématuré d'optimisation.None
(donc, non, ce n'est pas là à cause de l'inquiétude sur la chaîne vide en cas être inférieure à la valeur optimale).None
comme c'est une mauvaise pratique. Je serais plutôt d'une exception soulevée par cette affaire que d'avoir (éventuellement mal) chaîne vide en silence passé.None
valeurs vous pouvez utiliserlambda e: e[:1].upper() + e[1:] if e or e is None else ''
.lambda e: e[:1].upper() + e[1:]
.s
est la liste de chaînes de caractères en cours de modification. Lee
est juste l'argument le nom de l'un des éléments de ce que l'map()
fonction va passer à lalambda
fonction qui est définie dans l'expression.e is None
.""
ou ont de la valeurNone
. Deux de ces valeurs ont une truthiness deFalse
en Python quand ils sont utilisés comme un simple booléen/valeur conditionnelle comme l'expression dans unif
déclaration. Il y a aussi un problème lié cours de discussion au sujet de savoir si de telles valeurs qui devraient être traitées avec silencieusement/automatiquement ou lever des exceptions doivent être rencontrées.Vous pouvez utiliser
temp
, il n'a rien fait et est donc le même quelist[i]=list[i].capitalize()
-- qui ne fonctionne que si l'OP de la liste nommées
a été renommélist
-- mais ce serait une mauvaise pratique, car cela permettrait de masquer la fonction intégrée/type du même nom. Je ne sais pas pourquoi la virgule sur l'instruction print a été mis là...