s = ['my', 'name']
Je veux changer la 1ère lettre de chaque élément en majuscule.
s = ['My', 'Name']
.Capitalize () et .title () modifient les autres lettres de la chaîne en minuscules.
Voici une fonction simple qui ne change que la première lettre en majuscule et laisse le reste inchangé.
def upcase_first_letter(s):
return s[0].upper() + s[1:]
Vous pouvez utiliser la méthode capitalize () :
s = ['my', 'name']
s = [item.capitalize() for item in s]
print s # print(s) in Python 3
Cela va imprimer:
['My', 'Name']
Vous pouvez utiliser 'my'.title()
qui retournera 'My'
.
Pour obtenir la liste complète, il suffit de mapper dessus comme suit:
>>> map(lambda x: x.title(), s)
['My', 'Name']
En fait, .title()
fait en sorte que tous les mots commencent par des majuscules. Si vous voulez limiter strictement la première lettre, utilisez plutôt capitalize()
. (Cela fait une différence, par exemple, en changeant This Word
ou This Word
dans 'ce mot'
Cela n'a probablement pas d'importance, mais vous voudrez peut-être utiliser ceci à la place des méthodes de chaîne capitalize()
ou title()
car, en plus de mettre la première lettre en majuscule, elles mettent également le reste de la chaîne en minuscule:
s = map(lambda e: e[:1].upper() + e[1:] if e else '', s)
Remarque: En Python 3, vous devez utiliser:
s = list(map(lambda e: e[:1].upper() + e[1:] if e else '', s))
parce que map()
renvoie un itérateur qui applique la fonction à chaque élément de iterable au lieu de list
comme dans Python 2 (vous devez donc le transformer vous-même).
Vous pouvez utiliser
for i in range(len(s)):
s[i]=s[i].capitalize()
print s