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

Python实现字符串指定区间内数字转换为对应英文单词功能

字符串指定区间数字转英文全拼实现说明

功能需求

  • 输入参数:1个待处理字符串、1个起始位置整数、1个结束位置整数
  • 处理逻辑:将字符串中处于两个位置之间的数字,转换为对应的大写英文全拼,非数字字符保持原内容不变

原始示例代码(存在逻辑缺陷)

def convert_digits( input_string, start_position, end_position ) :
    new_string = input_string[:start_position]
    digit_mapping = {
        '0': 'ZERO',
        '1': 'ONE',
        '2': 'TWO',
        '3': 'THREE',
        '4': 'FOUR',
        '5': 'FIVE',    
        '6': 'SIX',
        '7': 'SEVEN',
        '8': 'EIGHT',
        '9': 'NINE'
    }
    
    for index in range(start_position, end_position):
        if input_string[index].isdigit():
            mapped = digit_mapping[input_string[index]]
            new_string = mapped
        
    new_string += input_string[end_position + 1:]
    return new_string

缺陷说明:循环处理字符时直接对new_string赋值,覆盖了之前拼接的内容,会导致起始位置到当前处理位置之前的内容全部丢失;同时遍历范围不包含结束位置、拼接后缀时跳过了结束位置字符,会导致结束位置的内容丢失。

修正后可正常运行的实现

def convert_digits(input_string, start_position, end_position):
    # 初始化结果为起始位置之前的所有内容
    new_string = input_string[:start_position]
    digit_mapping = {
        '0': 'ZERO', '1': 'ONE', '2': 'TWO', '3': 'THREE', '4': 'FOUR',
        '5': 'FIVE', '6': 'SIX', '7': 'SEVEN', '8': 'EIGHT', '9': 'NINE'
    }
    # 遍历闭区间[start_position, end_position]的所有索引,避免遗漏结束位置字符
    for index in range(start_position, end_position + 1):
        current_char = input_string[index]
        if current_char.isdigit():
            # 数字追加对应的英文全拼
            new_string += digit_mapping[current_char]
        else:
            # 非数字直接追加原字符
            new_string += current_char
    # 追加结束位置之后的所有内容
    new_string += input_string[end_position + 1:]
    return new_string

使用示例

# 测试用例:处理字符串"a1b2c3d"中位置1到4的内容
print(convert_digits("a1b2c3d", 1, 4))
# 输出结果:aONEbTWOc3d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:54:03