Maison  >  Article  >  développement back-end  >  Comment convertir CamelCase en Snake_case en Python avec élégance ?

Comment convertir CamelCase en Snake_case en Python avec élégance ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-01 22:12:31550parcourir

How to Convert CamelCase to snake_case in Python Elegantly?

Fonction Python élégante pour convertir CamelCase en Snake_case ?

La conversion de CamelCase en Snake_case en Python nécessite une approche simple mais élégante. Cet article explore plusieurs méthodes efficaces pour réaliser cette transformation, en abordant les variations dans les conventions de dénomination et en fournissant des exemples clairs.

Utiliser des expressions régulières avec Lookahead/Lookbehind

La méthode la plus polyvalente utilise des expressions régulières avec des assertions d'anticipation et d'analyse :

<code class="python">import re

def camel_to_snake(name):
    name = re.sub(r'(?<!^)(?=[A-Z])', '_', name).lower()
    return name</code>

Ce modèle fait correspondre les limites entre les caractères majuscules et minuscules, en insérant des traits de soulignement tout en les convertissant simultanément en minuscules.

Modèles Regex alternatifs

Pour les cas plus complexes, voici une expression régulière alternative avec alternance :

<code class="python">pattern = re.compile(r"(\w+)([A-Z]\w+)")
name = "_".join(pattern.findall(name))</code>

Ce modèle gère les cas où plusieurs lettres majuscules apparaissent consécutivement.

Pour éviter de convertir "HTTPHeader " à " h_t_t_p_header ", utilisez le modèle suivant :

<code class="python">pattern = re.compile(r"([a-z])([A-Z])")
name = "_".join(pattern.findall(name))</code>

Substitutions multi-passes

Une approche alternative évite d'utiliser l'anticipation/la recherche derrière :

<code class="python">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()</code>

Cette approche combine deux passes de substitution pour gérer diverses conventions de dénomination.

Snake Case en Pascal Case

Pour être complet, voici une fonction pour convertir Snake_case en PascalCase :

<code class="python">def snake_to_pascal(name):
    name = ''.join(word.title() for word in name.split('_'))
    return name</code>

Ces fonctions fournissent une solution complète aux transformations CamelCase et Snake_case en Python, répondant à diverses conventions de dénomination.

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