Exemple :
>>> convert('CamelCase')
'camel_case'
Exemple :
>>> convert('CamelCase')
'camel_case'
Leicht angepasst von https://stackoverflow.com/users/267781/matth die Generatoren verwenden.
def uncamelize(s):
buff, l = '', []
for ltr in s:
if ltr.isupper():
if buff:
l.append(buff)
buff = ''
buff += ltr
l.append(buff)
return '_'.join(l).lower()
Ein grauenhaftes Beispiel für die Verwendung regulärer Ausdrücke (Sie könnten einfach bereinigen Sie das :) ):
def f(s):
return s.group(1).lower() + "_" + s.group(2).lower()
p = re.compile("([A-Z]+[a-z]+)([A-Z]?)")
print p.sub(f, "CamelCase")
print p.sub(f, "getHTTPResponseCode")
Funktioniert aber für getHTTPResponseCode!
Alternativ können Sie mit lambda:
p = re.compile("([A-Z]+[a-z]+)([A-Z]?)")
print p.sub(lambda x: x.group(1).lower() + "_" + x.group(2).lower(), "CamelCase")
print p.sub(lambda x: x.group(1).lower() + "_" + x.group(2).lower(), "getHTTPResponseCode")
EDIT: Es sollte auch ziemlich einfach zu sehen sein, dass es Raum für Verbesserungen für Fälle wie "Test" gibt, weil der Unterstrich unbedingt eingefügt wird.
Mit dieser einfachen Methode sollte es klappen:
import re
def convert(name):
return re.sub(r'([A-Z]*)([A-Z][a-z]+)', lambda x: (x.group(1) + '_' if x.group(1) else '') + x.group(2) + '_', name).rstrip('_').lower()
(entnommen aus ici siehe Arbeitsbeispiel online )
Sehr schöner RegEx-Vorschlag zu diese Seite :
(?<!^)(?=[A-Z])
Wenn Python eine String Split-Methode haben, sollte es funktionieren...
In Java:
String s = "loremIpsum";
words = s.split("(?<!^)(?=[A-Z])");
Ohne eine Bibliothek :
def camelify(out):
return (''.join(["_"+x.lower() if i<len(out)-1 and x.isupper() and out[i+1].islower()
else x.lower()+"_" if i<len(out)-1 and x.islower() and out[i+1].isupper()
else x.lower() for i,x in enumerate(list(out))])).lstrip('_').replace('__','_')
Ein bisschen schwer, aber
CamelCamelCamelCase -> camel_camel_camel_case
HTTPRequest -> http_request
GetHTTPRequest -> get_http_request
getHTTPRequest -> get_http_request
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.