如何用Python将文字数字转数值?范围-999,999,999至999,999,999
英文数字字符串转数值的Python实现
需求:将以英文文字表示数字的字符串转换为对应数值,例如输入negative sixty nine,输出-69。以下是实现代码:
ones = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] tens = ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"] teens = ["", "", "", "", "", "", "", "", "", "", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"] hun = ["hundred", "thousand", "million"] x = input() a = x.split() val = 0 # 处理负数前缀 if a[0] == 'negative': i = 1 else: i = 0 while i < len(a): if a[i] in ones: val += ones.index(a[i]) elif a[i] in tens: val += tens.index(a[i]) * 10 elif a[i] in teens: val += teens.index(a[i]) elif a[i] in hun: # 根据量级词调整当前数值 if a[i] == 'hundred': temp = 100 elif a[i] == 'thousand': temp = 1000 else: temp = 1000000 val *= temp i += 1 # 输出结果,负数则取反 print(-val if a[0] == 'negative' else val)
代码说明
- 用四个列表分别存储不同类型的数字词汇:个位数字、整十数字、10-19的特殊数字、量级单位(百、千、百万)
- 先判断输入是否包含
negative前缀,确定遍历起始位置 - 遍历拆分后的每个单词,根据词汇类型累加或倍增当前数值
- 最后根据前缀决定输出正负数值
内容的提问来源于stack exchange,提问作者Yaswanth G
相关产品推荐
相关产品推荐

