1
我設法使用正則表達式將python函數拼湊在一起,將camel轉換爲蛇案例,它適用於所有測試用例,但我仍然有幾個問題。將駝峯案例轉換爲蛇案例的python函數
1)實際做的三個陳述各是什麼?
import re
test_cases = list()
test_cases.append('camelCase')
test_cases.append('camelCaseCase')
test_cases.append('camel2Case')
test_cases.append('camel12Case')
test_cases.append('camel12Case')
test_cases.append('camelCaseURL')
test_cases.append('camel2CaseURL')
test_cases.append('camel12CaseURL')
test_cases.append('camel12Case2URL')
test_cases.append('camel12Case12URL')
test_cases.append('CamelCase')
test_cases.append('CamelCaseCase')
test_cases.append('URLCamelCase')
def camel_to_snake(string):
string = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', string)
string = re.sub('(.)([0-9]+)', r'\1_\2', string)
return re.sub('([a-z0-9])([A-Z])', r'\1_\2', string).lower()
for string in test_cases:
print(string + ' -> ' + camel_to_snake(string))
導致:
camelCase -> camel_case
camelCaseCase -> camel_case_case
camel2Case -> camel_2_case
camel12Case -> camel_12_case
camel12Case -> camel_12_case
camelCaseURL -> camel_case_url
camel2CaseURL -> camel_2_case_url
camel12CaseURL -> camel_12_case_url
camel12Case2URL -> camel_12_case_2_url
camel12Case12URL -> camel_12_case_12_url
CamelCase -> camel_case
CamelCaseCase -> camel_case_case
URLCamelCase -> url_camel_case
總是有一種比正則表達式更簡單的方法,但我認爲你想問的問題是「有沒有更好的方法」,前提是你有一個「更好」的定義。這對於[代碼評論](http://codereview.stackexchange.com/) – wnnmaw
是一個很好的問題你的意思是你實際上並不知道你寫的代碼在做什麼? –
有關替代方法,請參見[這個着名的問題](http://stackoverflow.com/questions/1175208/elegant-python-function-to-convert-camelcase-to-camel-case)。 – DSM