Python实现驼峰式字符串转蛇形命名:isupper方法无法分离大写字母求助
驼峰式转蛇形命名的几种实现方法
方法1:手动遍历字符(适合理解逻辑)
这种方法直接遍历字符串的每个字符,用isupper()识别大写字母后针对性处理:
def camel_to_snake(camel_str): snake_chars = [] for idx, char in enumerate(camel_str): if char.isupper(): # 非首字符先添加下划线 if idx != 0: snake_chars.append('_') # 大写转小写后加入列表 snake_chars.append(char.lower()) else: snake_chars.append(char) return ''.join(snake_chars)
逻辑说明:
- 逐个检查字符,遇到大写字母时,若不是字符串的第一个字符,先插入下划线,再将大写字母转为小写后加入结果列表
- 小写字母直接加入列表
- 最后用
join()拼接成完整的蛇形字符串
方法2:正则表达式(简洁高效)
用正则表达式匹配所有大写字母,批量替换为_+小写字母,再处理可能的开头下划线:
import re def camel_to_snake(camel_str): # 把每个大写字母替换为"_大写字母",再转全小写 temp_str = re.sub(r'([A-Z])', r'_\1', camel_str).lower() # 移除开头可能存在的下划线(适配大驼峰格式) return temp_str.lstrip('_')
逻辑说明:
re.sub(r'([A-Z])', r'_\1', camel_str)会将每个大写字母替换为_+该字母本身,比如HelloWorld会变成_Hello_World- 转全小写后得到
_hello_world,再用lstrip('_')去掉开头的下划线,最终得到hello_world - 小驼峰格式(如
helloWorld)转换后不会出现开头下划线,直接返回即可
方法3:利用字符串转换表(进阶写法)
通过str.maketrans()构建大写字母到_小写字母的映射表,再批量转换:
def camel_to_snake(camel_str): # 构建转换映射:每个大写字母 → "_+对应小写字母" trans_map = {chr(c): f'_{chr(c+32)}' for c in range(ord('A'), ord('Z')+1)} # 批量转换字符串 temp_str = camel_str.translate(trans_map) # 移除开头下划线 return temp_str.lstrip('_')
测试示例
# 小驼峰转换 print(camel_to_snake("helloWorld")) # 输出: hello_world # 大驼峰转换 print(camel_to_snake("HelloWorld")) # 输出: hello_world # 包含数字的驼峰字符串 print(camel_to_snake("userID123")) # 输出: user_id123
内容的提问来源于stack exchange,提问作者Sumit Patidar 12211863
相关产品推荐
相关产品推荐

