python驼峰转下划线,下划线转驼峰
【摘要】 在Python中,可以通过编写函数实现驼峰命名法(CamelCase)与下划线命名法(snake_case)的相互转换。以下是两种转换的实现方法: 1. 驼峰转下划线(CamelCase → snake_case)import redef camel_to_snake(name): # 在大写字母前插入下划线,然后转为小写 s1 = re.sub('(.)([A-Z][a-z]+...
在Python中,可以通过编写函数实现驼峰命名法(CamelCase)与下划线命名法(snake_case)的相互转换。以下是两种转换的实现方法:
1. 驼峰转下划线(CamelCase → snake_case)
import re
def camel_to_snake(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()
# 示例
print(camel_to_snake("CamelCase")) # 输出: camel_case
print(camel_to_snake("XMLParser")) # 输出: xml_parser
原理:
- 使用正则表达式匹配大写字母前的位置,插入下划线。
- 将所有字母转为小写。
2. 下划线转驼峰(snake_case → CamelCase)
小驼峰(首字母小写,如 camelCase
):
def snake_to_camel(name):
components = name.split('_')
return components[0] + ''.join(x.title() for x in components[1:])
# 示例
print(snake_to_camel("snake_case")) # 输出: snakeCase
大驼峰(首字母大写,如 CamelCase
):
def snake_to_pascal(name):
return ''.join(x.title() for x in name.split('_'))
# 示例
print(snake_to_pascal("snake_case")) # 输出: SnakeCase
原理:
- 按下划线分割字符串。
- 将每个单词的首字母大写(
title()
),然后拼接。 - 小驼峰保留第一个单词的首字母小写。
完整代码示例
import re
def camel_to_snake(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()
def snake_to_camel(name):
components = name.split('_')
return components[0] + ''.join(x.title() for x in components[1:])
def snake_to_pascal(name):
return ''.join(x.title() for x in name.split('_'))
# 测试
print(camel_to_snake("CamelCase")) # camel_case
print(snake_to_camel("snake_case")) # snakeCase
print(snake_to_pascal("snake_case")) # SnakeCase
注意事项
- 连续大写字母:如
XMLParser
会被转为xml_parser
(可能不符合某些规范,需根据需求调整)。 - 数字处理:上述代码已支持带数字的命名(如
var1Name
→var1_name
)。 - 性能:正则表达式适合大多数场景,但对超长字符串可能需优化。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)