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

Python正则问题:如何让连续大写字母的驼峰转文本结果一致

解决驼峰命名转可读文本的连续大写拆分问题

修改后的函数如下:

import re
from django.template import Library

register = Library()

@register.filter
def load_human_key(key):
    """
    驼峰命名key转换为可读性更高的文本
    return: 拆分后的可读文本
    """
    # 匹配大写字母开头的两种情况:单个大写+后续小写,或连续大写组
    regex = re.findall(r'[A-Z][a-z]*|[A-Z]+', key)
    if regex:
        return " ".join(regex)
    return key

问题原因

原正则[A-Z][^A-Z]*的逻辑是"匹配一个大写字母,加上后面所有非大写字符",遇到连续大写(如KEY)时,每个大写字母后没有非大写字符,会被拆分为单个的K、E、Y,导致不符合预期的结果。

新正则说明

新正则包含两种匹配规则:

  • [A-Z][a-z]*:匹配以单个大写字母开头,后续跟随任意数量小写字母的片段(如Json、Key)
  • [A-Z]+:匹配连续的大写字母组合(如KEY、HTTP)

这样调用load_human_key("JsonKey")会返回Json Key,调用load_human_key("JsonKEY")会返回Json KEY,满足基础需求。

如果需要让两种输入返回完全一致的Json Key(即把连续大写转为首字母大写、其余小写),可以修改拼接逻辑:

if regex:
    return " ".join(part.capitalize() if len(part) > 1 else part for part in regex)

内容的提问来源于stack exchange,提问作者micho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:10:37