122 votes

Convertir le Snake Case en Lower Camel Case (lowerCamelCase)

Quel serait un bon moyen de convertir du snake case (my_string) en lower camel case (myString) en Python 2.7 ?

La solution évidente est de diviser par le trait de soulignement, mettre en majuscule chaque mot sauf le premier et les joindre à nouveau ensemble.

Cependant, je suis curieux de connaître d'autres solutions plus idiomatiques ou une façon d'utiliser RegExp pour y parvenir (avec un modificateur de cas ?)

219voto

jbaiter Points 1054
def to_camel_case(snake_str):
    return "".join(x.capitalize() for x in snake_str.lower().split("_"))

def to_lower_camel_case(snake_str):
    # Nous mettons en majuscule la première lettre de chaque composant sauf le premier
    # avec la méthode 'capitalize' et les joignons ensemble.
    camel_string = to_camel_case(snake_str)
    return snake_str[0].lower() + camel_string[1:]

Exemple :

In [11]: to_lower_camel_case('snake_case')
Out[11]: 'snakeCase'

In [12]: to_lower_camel_case('SNAKE_Case')
Out[12]: 'snakeCase'

In [13]: to_lower_camel_case('SNAKE_CASE')
Out[13]: 'snakeCase'

31voto

Berislav Lopac Points 3251

Voici une autre approche, qui ne fonctionne que dans Python 3.5 et versions ultérieures :

def camel(snake_str):
    first, *others = snake_str.split('_')
    return ''.join([first.lower(), *map(str.title, others)])

27voto

Glenn Dills Points 221

Un peu en retard sur cela, mais j'ai trouvé ceci sur /r/python il y a quelques jours :

pip install pyhumps

et ensuite vous pouvez simplement faire :

import humps

humps.camelize('jack_in_the_box')  # jackInTheBox
# ou
humps.decamelize('rubyTuesdays')  # ruby_tuesdays
# ou
humps.pascalize('red_robin')  # RedRobin

12voto

steve Points 165

Une autre ligne

def to_camel_case(snake_string):
    return snake_string.title().replace("_", "")

9voto

Simeon Visser Points 30697

Ligne obligatoire :

import string

def to_camel_case(s):
    return s[0].lower() + string.capwords(s, sep='_').replace('_', '')[1:] if s else s

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