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!