web-dev-qa-db-fra.com

comment changer le cas de la première lettre d'une chaîne?

s = ['my', 'name']

Je veux changer la 1ère lettre de chaque élément en majuscule.

s = ['My', 'Name']
27
yyyy

.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:]
50

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']
26
Frédéric Hamidi

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'

12
Frank

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).

6
martineau

Vous pouvez utiliser

for i in range(len(s)):
   s[i]=s[i].capitalize()
print s
0
Kracekumar