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

Python3:将含全大写的字符串转标题格式且不破坏驼峰命名

解决Python中特定字符串转标题格式的需求

需求说明

需要将字符串转换为标题格式,满足以下规则:

  • 每个单词首字母大写
  • 保留单词内部的单个大写字母(驼峰命名风格)
  • 若单词内部存在连续大写字母,仅保留第一个大写,其余转为小写

示例:

>>> a = "TITLE BY DeSoto theHUMUNGUSone"
>>> print(myfunc(a))
Title By DeSoto TheHumungusone

问题分析

Python内置的str.title()方法无法满足需求:它会将单词内部所有非首字母转为小写,比如theHUMUNGUSone会被处理成Thehumungusone,既破坏了驼峰结构,也无法正确处理连续大写的情况。

解决方案

通过分割单词+正则替换的方式实现,具体步骤如下:

  1. 将字符串按空格分割为单个单词
  2. 对每个单词,先将首字母转为大写
  3. 用正则匹配单词内部的连续大写字母,将连续部分的第二个及以后字母转为小写
  4. 拼接处理后的单词得到最终结果

实现代码:

import re

def myfunc(s):
    def replace_continuous_caps(match):
        # 保留第一个大写字母,后续连续大写转小写
        return match.group(1) + match.group(2).lower()
    
    processed_words = []
    for word in s.split():
        if not word:
            processed_words.append(word)
            continue
        # 首字母大写
        capped_word = word[0].upper() + word[1:]
        # 替换连续大写
        fixed_word = re.sub(r'([A-Z])([A-Z]+)', replace_continuous_caps, capped_word)
        processed_words.append(fixed_word)
    
    return ' '.join(processed_words)

测试验证

# 测试示例输入
a = "TITLE BY DeSoto theHUMUNGUSone"
print(myfunc(a))  # 输出: Title By DeSoto TheHumungusone

# 其他测试场景
print(myfunc("HELLO world PyTHoN"))  # 输出: Hello World Python
print(myfunc("camelCASEExample"))    # 输出: Camelcaseexample
print(myfunc("SingleCAP"))           # 输出: Singlecap

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:36:18