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

如何用Python正则拆分字符串:拆分单个字母,保留连续数字?

解决方案:拆分字符串(保留连续数字,拆分单个字母/符号)

你的问题核心是原正则只处理了非字母字符的拆分,但未将连续字母拆分为单个字符。改用re.findall而非re.split可以更精准实现需求,直接提取所有符合规则的片段:

核心正则表达式

使用r'\d+|[^\d]',规则解析:

  • \d+:匹配1个或多个连续数字,确保数字作为整体保留
  • |:分支匹配,满足任意一侧规则即可
  • [^\d]:匹配任意单个非数字字符,包括字母、符号,保证单个提取

代码示例

基础版(输出字符串类型的数字)

import re
line = "2a34bc%56def7"
result = re.findall(r'\d+|[^\d]', line)
print(result)
# 输出: ['2', 'a', '34', 'b', 'c', '%', '56', 'd', 'e', 'f', '7']

进阶版(将数字转为整数)

如果需要把数字转换成整数类型,可添加列表推导式:

import re
line = "2a34bc%56def7"
result = [int(x) if x.isdigit() else x for x in re.findall(r'\d+|[^\d]', line)]
print(result)
# 输出: [2, 'a', 34, 'b', 'c', '%', 56, 'd', 'e', 'f', 7]

原方案问题说明

你之前用的re.split('([^a-zA-Z])', line)逻辑是拆分非字母字符并保留它们,但连续字母会被视为一个整体保留,无法实现单个字母拆分的需求。而re.findall直接匹配我们需要的每一个目标片段,逻辑更贴合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 06:13:18