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

Python:识别列表字符串中的区间并替换为区间内所有数字的方法

实现代码

直接用正则替换的回调机制完成区间展开,不需要额外做字符串拆分判断,代码如下:

import re

def process_list(input_list):
    # 匹配"数字to数字"的模式,兼容to前后的空格
    range_pattern = re.compile(r"(\d+)\s*to\s*(\d+)")
    # 区间展开回调:将匹配到的起止数字替换为完整的枚举数字串
    def expand_match(match):
        start, end = map(int, match.groups())
        return ",".join(map(str, range(start, end + 1)))
    # 逐个处理所有字符串,合并后提取全部数字
    processed_content = " ".join([range_pattern.sub(expand_match, s) for s in input_list])
    # 提取所有数字,可按需转成int类型
    return re.findall(r"\d+", processed_content)

# 测试示例
l = ["12,13,14,15",
     "12 to 18",
     "10,21,22 to 42",
     "14,48,52",
     "12,14,22;45 and also 24 to 32"
]
print(process_list(l))
实现说明
  • 不需要提前判断字符串是否包含to,正则会自动匹配所有存在的区间格式完成替换,兼容人工输入的to前后多余空格
  • 无需处理杂乱的分隔符和备注内容,最终直接通过数字匹配正则提取所有结果,容错性更高
  • 区间默认按闭区间处理,若需要左闭右开可自行修改range(start, end+1)为range(start, end)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:36:02