Maison >développement back-end >Tutoriel Python >Comment convertir efficacement CamelCase en Snake_case en Python ?

Comment convertir efficacement CamelCase en Snake_case en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-28 00:20:29327parcourir

How to efficiently convert CamelCase to snake_case in Python?

CamelCase en Snake_case Conversion en Python

La conversion de CamelCase en Snake_case est une transformation fréquente dans la programmation Python. Cette question se concentre sur la recherche d'un moyen efficace d'effectuer cette tâche.

Solution proposée

Le code fourni utilise le module re pour réaliser cette conversion :

importer re

name = 'CamelCaseName'
name = re.sub(r'(?print(name) # camel_case_name

Ce code utilise une expression régulière pour insérer des traits de soulignement avant les majuscules, puis convertit la chaîne résultante en minuscules. Le résultat est la représentation Snake_case souhaitée.

Approches alternatives

Si les performances posent problème, l'expression régulière peut être compilée au préalable :

modèle = re.compile(r'(?name = pattern.sub('_', name).lower()

Pour les cas plus avancés, un double pass de substitution peut être utilisé :

def camel_to_snake(name):

name = re.sub('(.)([A-Z][a-z]+)', r'_', name)
return re.sub('([a-z0-9])([A-Z])', r'_', name).lower()

De plus, le code peut être étendu pour gérer plusieurs traits de soulignement :

def to_snake_case(name):

name = re.sub('(.)([A-Z][a-z]+)', r'_', name)
name = re.sub('__([A-Z])', r'_', name)
name = re.sub('([a-z0-9])([A-Z])', r'_', name)
return name.lower()

Snake_case to PascalCase Conversion

De plus, une conversion inverse de Snake_case en PascalCase est fournie :

name = 'snake_case_name'
name = ''.join(word.title() for word in name.split('_'))
imprimer(nom) # SnakeCaseName

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn