在Python编程中,经常需要将各种格式的字符串转换为驼峰命名法(CamelCase),以满足变量名、函数名或类名的命名规范。驼峰命名法分为小驼峰(lowerCamelCase)和大驼峰(UpperCamelCase)两种,前者首字母小写,后续单词首字母大写;后者则所有单词首字母均大写。
小驼峰命名法(lowerCamelCase)
小驼峰命名法要求字符串的首字母小写,之后的每个单词首字母大写。以下是一个Python实现:
Bash
def to_lower_camel_case(s):
"""
将字符串转换为小驼峰命名法
:param s: 输入字符串,假设已经是首字母大写或全大写,且单词间无分隔符
:return: 转换后的小驼峰命名法字符串
"""
if not s:
return ""
result = []
is_first = True # 标记是否为第一个字母
for char in s:
if char.isupper() and not is_first: # 如果当前字符大写且不是第一个字符
result.append('_' + char.lower()) # 插入下划线并转换为小写
else:
result.append(char.lower() if is_first and char.isupper() else char) # 处理首字母大写的情况
is_first = False
return ''.join(result).lstrip('_') # 去除开头的下划线(如果有的话)
# 示例
input_str = "CooingOspreysEchoesIsleRiver"
print(to_lower_camel_case(input_str))
执行结果:
大驼峰命名法(UpperCamelCase)
大驼峰命名法与小驼峰类似,只是第一个单词的首字母也大写。我们可以通过修改上述函数来实现:
Bash
import re
def to_lower_camel_case(s):
# 使用正则表达式清洗字符串,去除非字母字符,并转换为大写字母
cleaned_s = re.sub(r'[^a-zA-Z]', '', s).title()
# 处理首字母小写
result = [cleaned_s[0].lower()] if cleaned_s else []
# 添加剩余字符
result.extend(cleaned_s[1:])
return ''.join(result)
# 示例
input_str = "Cooing Ospreys-Echoes_Isle River"
print(to_lower_camel_case(input_str)) # 输出应为 cooingOspreysEchoesIsleRiver
def to_upper_camel_case(s):
"""
将字符串转换为大驼峰命名法
:param s: 输入字符串,可以包含非字母字符作为分隔符
:return: 转换后的大驼峰命名法字符串
"""
# 直接调用小驼峰命名法函数,并将结果首字母大写
result = to_lower_camel_case(s)
return result[0].upper() + result[1:] if result else ""
# 示例
print(to_upper_camel_case(input_str))
执行结果:
使用正则表达式 re.sub(r'[^a-zA-Z]', '', s) 去除所有非字母字符,并保留大写字母。title() 方法将字符串中每个单词的首字母转换为大写。对于小驼峰命名法,首字母必须是小写,所以先将第一个字符转换为小写。
通过这种方式,函数可以更好地处理各种输入情况,包括包含空格、连字符等非字母字符的字符串。