编写一个 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+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告