Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konvertiert man CamelCase elegant in Snake_case in Python?

Wie konvertiert man CamelCase elegant in Snake_case in Python?

Barbara Streisand
Barbara StreisandOriginal
2024-11-01 22:12:31550Durchsuche

How to Convert CamelCase to snake_case in Python Elegantly?

Elegante Python-Funktion zum Konvertieren von CamelCase in Snake_case?

Die Konvertierung von CamelCase in Snake_case in Python erfordert einen einfachen, aber eleganten Ansatz. In diesem Artikel werden mehrere effektive Methoden zum Erreichen dieser Transformation untersucht, wobei auf Variationen in Namenskonventionen eingegangen und klare Beispiele bereitgestellt werden.

Verwendung regulärer Ausdrücke mit Lookahead/Lookbehind

Die vielseitigste Methode verwendet reguläre Ausdrücke mit Lookahead- und Lookbehind-Behauptungen:

<code class="python">import re

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

Dieses Muster gleicht Grenzen zwischen Groß- und Kleinbuchstaben ab, fügt Unterstriche ein und konvertiert gleichzeitig in Kleinbuchstaben.

Alternative Regex-Muster

Für komplexere Fälle gibt es hier einen alternativen regulären Ausdruck mit Alternation:

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

Dieses Muster behandelt Fälle, in denen mehrere Großbuchstaben nacheinander erscheinen.

Um die Konvertierung von „HTTPHeader " zu „h_t_t_p_header“ verwenden Sie das folgende Muster:

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

Multi-Pass-Ersetzungen

Ein alternativer Ansatz vermeidet die Verwendung von Lookahead/Lookbehind:

<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>

Dieser Ansatz kombiniert zwei Substitutionsdurchläufe, um verschiedene Namenskonventionen zu handhaben.

Snake Case in Pascal Case

Der Vollständigkeit halber finden Sie hier eine Funktion zum Konvertieren von „snake_case“ in „PascalCase“. :

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

Diese Funktionen bieten eine umfassende Lösung für CamelCase- und Snake_case-Transformationen in Python und berücksichtigen verschiedene Namenskonventionen.

Das obige ist der detaillierte Inhalt vonWie konvertiert man CamelCase elegant in Snake_case in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn