88 votes

Comment abaisser le premier caractère d'une chaîne ?

Il y a une fonction pour capitaliser une chaîne, j'aimerais pouvoir changer le premier caractère d'une chaîne pour être sûr qu'elle sera minuscule.

Comment puis-je faire ça en Python ?

87voto

martineau Points 21665

One-liner qui gère les chaînes vides et None :

func = lambda s: s[:1].lower() + s[1:] if s else ''

>>> func(None)
>>> ''
>>> func('')
>>> ''
>>> func('MARTINEAU')
>>> 'mARTINEAU'

47voto

JoshD Points 7303
s = "Bobby tables"
s = s[0].lower() + s[1:]

22voto

RichieHindle Points 98544
def first_lower(s):
   if len(s) == 0:
      return s
   else:
      return s[0].lower() + s[1:]

print first_lower("HELLO")  # Prints "hELLO"
print first_lower("")       # Doesn't crash  :-)

10voto

Adrian McCarthy Points 17018

Fait intéressant, aucune de ces réponses ne fait exactement le contraire de capitalize(). Par exemple, capitalize('abC') rapporte Abc plutôt que AbC. Si vous voulez le contraire de capitalize(), vous avez besoin de quelque chose comme :

def uncapitalize(s):
  if len(s) > 0:
    s = s[0].lower() + s[1:].upper()
  return s

8voto

Manoj Govindan Points 24030

Méthode la plus simple :

>>> mystring = 'ABCDE'
>>> mystring[0].lower() + mystring[1:]
'aBCDE'
>>> 

Mettre à jour

Voir cette réponse (par @ RichieHindle) pour une solution plus infaillible, y compris la manipulation des chaînes vides. Cette réponse ne gère pas None cependant, alors voici ma prise :

>>> def first_lower(s):
   if not s: # Added to handle case where s == None
   return 
   else:
      return s[0].lower() + s[1:]

>>> first_lower(None)
>>> first_lower("HELLO")
'hELLO'
>>> first_lower("")
>>> 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X