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

如何在Python中将带字母前缀的列表转换为数值字符串范围

实现带字母前缀的有序列表转范围合并字符串

核心思路

先拆分每个元素的字母前缀和数字部分,对数字进行连续区间合并后,再重新拼接成带前缀的范围格式。

代码实现

def merge_ranges(lst):
    if not lst:
        return ""
    
    # 提取公共前缀(假设所有元素前缀一致)
    prefix = ''.join([c for c in lst[0] if not c.isdigit()])
    # 提取所有数字部分并转为整数
    nums = [int(''.join([c for c in s if c.isdigit()])) for s in lst]
    
    ranges = []
    start = nums[0]
    end = nums[0]
    
    for num in nums[1:]:
        if num == end + 1:
            end = num
        else:
            ranges.append((start, end))
            start = num
            end = num
    # 添加最后一个区间
    ranges.append((start, end))
    
    # 转换为目标格式字符串
    result_parts = []
    for s, e in ranges:
        if s == e:
            result_parts.append(f"{prefix}{s}")
        else:
            result_parts.append(f"{prefix}{s} - {prefix}{e}")
    
    return ", ".join(result_parts)

# 测试示例
list_input = ['X70', 'X71', 'X72', 'X73', 'X75', 'X76', 'X77', 'X79', 'X80']
string_output = merge_ranges(list_input)
print(f"string = \"{string_output}\"")

代码说明

  • 提取前缀:通过筛选第一个元素的非数字字符,得到公共前缀(比如示例中的X)。
  • 数字转换:把每个元素的数字部分转为整数,方便判断连续性。
  • 合并区间:遍历数字列表,将连续的数字归为一个区间,记录每个区间的起始和结束值。
  • 格式拼接:根据区间的起始和结束是否相同,生成对应的单元素或范围字符串,最后用, 连接所有部分。

测试结果

运行代码后会输出:

string = "X70 - X73, X75 - X77, X79, X80"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:43:23