Python中使用字典替代if语句实现文本数字转数值功能的问题排查
问题原因
你改写后的代码存在判断条件的手误:
- 原始代码中判断逻辑是校验当前遍历字符是否为空格:
if i == ' '(单引号中间包含1个空格字符) - 你改写后的判断条件写为
if i == ''(单引号中间没有内容,代表空字符串)
空格是ASCII码为32的有效字符,和空字符串完全不等,因此遍历到空格时触发不了if分支,会进入else分支把空格也拼接到temp变量中,后续查字典时会因为键不存在报错,也无法正常拆分单词。
修正后的可运行代码
def text_to_digit(s): temp='' num='' d={'one':'1', 'two':'2', 'three':'3', 'four': '4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9', 'zero':'0'} for i in s: # 修正为判断空格字符 if i == ' ': num = num + d[temp] temp='' else: temp = temp + i num=num+d[temp] return int(num)
如果需要兼容非法输入的场景,可以把字典取值逻辑替换为d.get(temp, ''),避免非法单词触发KeyError。
内容的提问来源于stack exchange,提问作者Henry Wang
相关产品推荐
相关产品推荐

