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

如何用Python生成含数字的字符串首字母缩写?以RCCS14需求为例

生成带数字保留的英文短语缩写词

我来帮你搞定这个缩写生成的问题!你想要把字符串 theatre = 'Regal Crown Center Stadium 14' 转换成RCCS14——也就是字母单词取首字母大写,数字部分完整保留对吧?看你之前试了几种方法都没达到预期,我来给你分析下问题,再给你靠谱的解决方案。

先说说你之前尝试的问题

  • 第一个方法用split()拆分后取每个单词首字母,会把14当成普通单词,只取第一个字符1,结果变成RCCS1,不符合要求;
  • 后面的正则尝试里,(\w+ | \d{1,2})的空格是多余的,而且\w+本身已经包含数字,会把14识别为字母数字混合的单词,还是只取首字母1,同样不对。

正确的解决方案

这里有两种简单有效的方法,都能完美得到你想要的RCCS14:

方法一:拆分处理字母与数字

先把字符串拆成「纯字母单词」和「纯数字序列」两部分,然后分别处理:

import re

theatre = 'Regal Crown Center Stadium 14'
# 匹配所有纯字母单词或纯数字序列
parts = re.findall(r'[A-Za-z]+|\d+', theatre)
# 遍历每个部分:字母取首字母大写,数字直接保留
acronym = ''.join(part[0].upper() if part.isalpha() else part for part in parts)
print(acronym)  # 输出:RCCS14

方法二:正则替换一步到位

用正则替换直接把每个字母单词替换成首字母,数字部分自动保留:

import re

theatre = 'Regal Crown Center Stadium 14'
# 匹配每个字母开头的单词,替换为首字母大写;数字不匹配规则,直接保留
acronym = re.sub(r'([A-Za-z])[A-Za-z]*\s*', lambda m: m.group(1).upper(), theatre)
print(acronym)  # 输出:RCCS14

解释下原理

  • 方法一的正则[A-Za-z]+|\d+会精准把字符串拆成字母块和数字块,比如拆成['Regal', 'Crown', 'Center', 'Stadium', '14'],然后对字母块取首字母,数字块全保留;
  • 方法二的正则([A-Za-z])[A-Za-z]*\s*匹配每个字母单词(包括后面的空格),用lambda函数把它替换成单词的首字母大写,数字部分因为不匹配这个正则,所以原封不动留在结果里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:59:41