You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 10:55:16