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
相关产品推荐
相关产品推荐

