332 Stimmen

Elegante Python-Funktion zur Umwandlung von CamelCase in snake_case?

Exemple :

>>> convert('CamelCase')
'camel_case'

-1voto

dmrz Punkte 1913
def convert(name):
    return reduce(
        lambda x, y: x + ('_' if y.isupper() else '') + y, 
        name
    ).lower()

Und wenn wir einen Fall abdecken müssen, bei dem die Eingabe noch nicht abgeschlossen ist:

def convert(name):
    return reduce(
        lambda x, y: x + ('_' if y.isupper() and not x.endswith('_') else '') + y, 
        name
    ).lower()

-1voto

Stefano Borini Punkte 132313

Nicht in der Standardbibliothek, aber ich fand dieses Modul die die von Ihnen benötigte Funktionalität zu enthalten scheint.

-1voto

codekoala Punkte 705

Wenn Sie Googles (fast) deterministischer Camel-Case-Algorithmus dann braucht man sich nicht um Dinge zu kümmern wie HTMLDocument da es sein sollte HtmlDocument dann ist dieser Regex-basierte Ansatz einfach. Er ersetzt alle Großbuchstaben oder Zahlen durch einen Unterstrich. Hinweis: Mehrstellige Zahlen werden nicht behandelt.

import re

def to_snake_case(camel_str):
    return re.sub('([A-Z0-9])', r'_\1', camel_str).lower().lstrip('_')

-2voto

JohnBoy Punkte 113
def convert(camel_str):
    temp_list = []
    for letter in camel_str:
        if letter.islower():
            temp_list.append(letter)
        else:
            temp_list.append('_')
            temp_list.append(letter)
    result = "".join(temp_list)
    return result.lower()

-5voto

Arshin Punkte 1050

Verwendung: str.capitalize() um den ersten Buchstaben der (in der Variablen str enthaltenen) Zeichenkette in einen Großbuchstaben umzuwandeln und die gesamte Zeichenkette zurückzugeben.

Beispiel: Befehl: "hallo".capitalize() Ausgabe: Hallo

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X