編寫一個 Python 函式,將駝峰命名法轉換為蛇形命名法?


駝峰命名法和蛇形命名法是我們在程式設計時將單詞組合在一起的方式。

駝峰命名法中,我們將單詞組合在一起,不使用空格,並且除了第一個單詞之外,每個新單詞都以大寫字母開頭。例如,如果我們想為某人的出生日期編寫一個變數名,我們可以這樣寫:dateOfBirth。

蛇形命名法中,我們將單詞組合在一起,並在它們之間使用下劃線符號,並且所有字母都小寫。例如,如果我們想為某人的家庭住址編寫一個變數名,我們可以這樣寫:home_address。

這兩種方法都很有用,因為它們使變數名易於閱讀和理解。選擇一種並始終如一地將其用於我們的程式碼以避免混淆非常重要。

示例

這是一個將駝峰命名法字串轉換為蛇形命名法字串的簡單函式:

在這個示例中,函式 `camel_to_snake` 以駝峰命名法字串作為輸入,並返回蛇形命名法字串。該函式迴圈遍歷字串中的每個字元,並將其新增到新字串中,在每個大寫字母(第一個除外)之前新增一個下劃線,以建立蛇形命名法字串。

def camel_to_snake(camel_case_string):
   snake_case_string = ""
   for i, c in enumerate(camel_case_string):
      if i == 0:
         snake_case_string += c.lower()
      elif c.isupper():
         snake_case_string += "_" + c.lower()
      else:
         snake_case_string += c

   return snake_case_string

camel_case_string = "camelCaseString"
snake_case_string = camel_to_snake(camel_case_string)

print("Camel case string:", camel_case_string)
print("Snake case string:", snake_case_string)

輸出

Camel case string: camelCaseString
Snake case string: camel_case_string

示例

在這個示例中,函式 `camel_to_snake` 使用 `re.sub()` 方法將任何大寫字母替換為下劃線後跟相同的小寫字母。然後對結果字串呼叫 `lower()` 方法將其轉換為小寫。

這是另一個使用正則表示式的函式,它將駝峰命名法字串轉換為蛇形命名法字串:

import re
def camel_to_snake(camel_case_string):
   snake_case_string = re.sub('([A-Z])', r'_\1', camel_case_string).lower()
   return snake_case_string

camel_case_string = "camelCaseString"
snake_case_string = camel_to_snake(camel_case_string)

print("Camel case string:", camel_case_string)
print("Snake case string:", snake_case_string)

輸出

Camel case string: camelCaseString
Snake case string: camel_case_string

示例

這是一個將駝峰命名法字串轉換為蛇形命名法字串的另一個函式,它使用 `functools` 模組中的 `reduce()` 函式:

在這個示例中,函式 `camel_to_snake` 使用 `reduce()` 函式迭代輸入字串中的每個字元,並將其與前一個字元連線起來,在每個大寫字母(第一個除外)之前新增一個下劃線,以建立蛇形命名法字串。

from functools import reduce

def camel_to_snake(camel_case_string):
   return reduce(lambda x, y: x + ('_' if y.isupper() else '') + y.lower(), camel_case_string)

camel_case_string = "camelCaseString"
snake_case_string = camel_to_snake(camel_case_string)

print("Camel case string:", camel_case_string)
print("Snake case string:", snake_case_string)

輸出

Camel case string: camelCaseString
Snake case string: camel_case_string

示例

這是一個使用 for 迴圈迭代輸入字串中每個字元的另一個示例,將駝峰命名法轉換為蛇形命名法:

def camel_to_snake_case(input_str):
   output_str = ""
   for char in input_str:
      if char.isupper():
         output_str += "_" + char.lower()
      else:
         output_str += char
   return output_str

# Example usage
print(camel_to_snake_case("thisIsCamelCase")) # Output: this_is_camel_case

輸出

this_is_camel_case

示例

這是一個使用正則表示式匹配和替換駝峰命名法的另一個示例:

import re
def camel_to_snake_case(input_str):
   output_str = re.sub('([a-z0-9])([A-Z])', r'\1_\2', input_str).lower()
   return output_str
# Example usage
print(camel_to_snake_case("thisIsCamelCase")) # Output: this_is_camel_case

輸出

this_is_camel_case

更新於: 2023年5月8日

3K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告