SORU
24 Temmuz 2009, Cuma


Zarif Python CamelCase camel_case dönüştürmek için işlevi?

Örnek:

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

CEVAP
24 Temmuz 2009, Cuma


Bu oldukça kapsamlı

def convert(name):
    s1 = re.sub('(.)([A-Z][a-z] )', r'\1_\2', name)
    return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower()

Tüm bunlar ile çalışır (ve zaten BM-cameled sürümleri zarar gelmez):

>>> convert('CamelCase')
'camel_case'
>>> convert('CamelCamelCase')
'camel_camel_case'
>>> convert('Camel2Camel2Case')
'camel2_camel2_case'
>>> convert('getHTTPResponseCode')
'get_http_response_code'
>>> convert('get2HTTPResponseCode')
'get2_http_response_code'
>>> convert('HTTPResponseCode')
'http_response_code'
>>> convert('HTTPResponseCodeXYZ')
'http_response_code_xyz'

Ya eğer yüz kere arayacaksın, pre-derleme yukarıdaki diyagram:

first_cap_re = re.compile('(.)([A-Z][a-z] )')
all_cap_re = re.compile('([a-z0-9])([A-Z])')
def convert(name):
    s1 = first_cap_re.sub(r'\1_\2', name)
    return all_cap_re.sub(r'\1_\2', s1).lower()

Düzenli ifade modülünü almak için unutma

import re

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • Kai Moosmann

    Kai Moosmann

    5 Temmuz 2006
  • paulandstorm

    paulandstorm

    4 EYLÜL 2006