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

Barbara Streisand
Libérer: 2024-11-01 22:12:31
original
625 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal