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

Python中实现字符串字符按后续数字重复的方法求助

没问题!这种字符串展开的需求在Python里有好几种实用的实现方式,我给你整理两个常用方案:

方案1:正则表达式(最简洁)

用Python的re模块匹配每个「字符+数字」的组合,直接替换成重复后的字符,代码非常简洁:

import re

def expand_string(s):
    # 正则匹配单个字母(可根据需求调整匹配范围)和后面的数字
    return re.sub(r'([a-zA-Z])(\d+)', lambda match: match.group(1) * int(match.group(2)), s)

# 测试示例
print(expand_string('s3t2'))    # 输出: ssstt
print(expand_string('w4'))      # 输出: wwww
print(expand_string('x1y2z4'))  # 输出: xyyzzzz
print(expand_string('a10b3'))   # 输出: aaaaaaaaaabbb(支持多位数字)

说明:

  • 正则模式([a-zA-Z])(\d+):[a-zA-Z]匹配单个字母(如果需要支持其他字符比如下划线,可改成\w),\d+匹配一个或多个数字(兼容多位数字的情况)。
  • lambda函数拿到匹配结果后,把第一个分组的字符重复第二个分组的数字次数,完成替换。

方案2:手动遍历解析(更灵活,易扩展)

如果不想依赖正则,或者需要更精细的格式校验,可以手动遍历字符串解析,还能方便处理异常情况:

def expand_string_manual(s):
    result = []
    i = 0
    str_length = len(s)
    
    while i < str_length:
        # 提取当前字符
        current_char = s[i]
        i += 1
        
        # 收集后面所有连续的数字(处理多位数字)
        num_str = ''
        while i < str_length and s[i].isdigit():
            num_str += s[i]
            i += 1
        
        # 校验格式:如果字符后没有数字,抛出异常
        if not num_str:
            raise ValueError(f"格式错误:字符 '{current_char}' 后未跟随数字")
        
        # 重复字符并加入结果列表
        result.append(current_char * int(num_str))
    
    return ''.join(result)

# 测试示例
print(expand_string_manual('s3t2'))    # ssstt
print(expand_string_manual('x1y2z4'))  # xyyzzzz
# 测试异常情况(会抛出 ValueError)
# print(expand_string_manual('st2'))

说明:

  • 用索引遍历字符串,先取字符,再收集后续所有连续数字,避免了正则的黑盒逻辑,更容易调试和修改。
  • 加入了格式校验,如果输入不符合「字符+数字」的规则,会直接抛出明确的错误提示,方便排查问题。

你可以根据自己的需求选择合适的方案,两种方法都能完美处理你给出的示例场景~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 10:02:44