python实现将英文单词表示的数字转换成阿拉伯数字的方法


Posted in Python onJuly 02, 2015

本文实例讲述了python实现将英文单词表示的数字转换成阿拉伯数字的方法。分享给大家供大家参考。具体实现方法如下:

import re
_known = {
  'zero': 0,
  'one': 1,
  'two': 2,
  'three': 3,
  'four': 4,
  'five': 5,
  'six': 6,
  'seven': 7,
  'eight': 8,
  'nine': 9,
  'ten': 10,
  'eleven': 11,
  'twelve': 12,
  'thirteen': 13,
  'fourteen': 14,
  'fifteen': 15,
  'sixteen': 16,
  'seventeen': 17,
  'eighteen': 18,
  'nineteen': 19,
  'twenty': 20,
  'thirty': 30,
  'forty': 40,
  'fifty': 50,
  'sixty': 60,
  'seventy': 70,
  'eighty': 80,
  'ninety': 90
  }
def spoken_word_to_number(n):
  """Assume n is a positive integer".
assert _positive_integer_number('nine hundred') == 900
assert spoken_word_to_number('one hundred') == 100
assert spoken_word_to_number('eleven') == 11
assert spoken_word_to_number('twenty two') == 22
assert spoken_word_to_number('thirty-two') == 32
assert spoken_word_to_number('forty two') == 42
assert spoken_word_to_number('two hundred thirty two') == 232
assert spoken_word_to_number('two thirty two') == 232
assert spoken_word_to_number('nineteen hundred eighty nine') == 1989
assert spoken_word_to_number('nineteen eighty nine') == 1989
assert spoken_word_to_number('one thousand nine hundred and eighty nine') == 1989
assert spoken_word_to_number('nine eighty') == 980
assert spoken_word_to_number('nine two') == 92 # wont be able to convert this one
assert spoken_word_to_number('nine thousand nine hundred') == 9900
assert spoken_word_to_number('one thousand nine hundred one') == 1901
"""
  n = n.lower().strip()
  if n in _known:
    return _known[n]
  else:
    inputWordArr = re.split('[ -]', n)
  assert len(inputWordArr) > 1 #all single words are known
  #Check the pathological case where hundred is at the end or thousand is at end
  if inputWordArr[-1] == 'hundred':
    inputWordArr.append('zero')
    inputWordArr.append('zero')
  if inputWordArr[-1] == 'thousand':
    inputWordArr.append('zero')
    inputWordArr.append('zero')
    inputWordArr.append('zero')
  if inputWordArr[0] == 'hundred':
    inputWordArr.insert(0, 'one')
  if inputWordArr[0] == 'thousand':
    inputWordArr.insert(0, 'one')
  inputWordArr = [word for word in inputWordArr if word not in ['and', 'minus', 'negative']]
  currentPosition = 'unit'
  prevPosition = None
  output = 0
  for word in reversed(inputWordArr):
    if currentPosition == 'unit':
      number = _known[word]
      output += number
      if number > 9:
        currentPosition = 'hundred'
      else:
        currentPosition = 'ten'
    elif currentPosition == 'ten':
      if word != 'hundred':
        number = _known[word]
        if number < 10:
          output += number*10
        else:
          output += number
      #else: nothing special
      currentPosition = 'hundred'
    elif currentPosition == 'hundred':
      if word not in [ 'hundred', 'thousand']:
        number = _known[word]
        output += number*100
        currentPosition = 'thousand'
      elif word == 'thousand':
        currentPosition = 'thousand'
      else:
        currentPosition = 'hundred'
    elif currentPosition == 'thousand':
      assert word != 'hundred'
      if word != 'thousand':
        number = _known[word]
        output += number*1000
    else:
      assert "Can't be here" == None
  return(output)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
详解supervisor使用教程
Nov 21 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
Linux下python3.7.0安装教程
Jul 30 Python
对django中render()与render_to_response()的区别详解
Oct 16 Python
详解Python 调用C# dll库最简方法
Jun 20 Python
使用python serial 获取所有的串口名称的实例
Jul 02 Python
python实现日志按天分割
Jul 22 Python
python烟花效果的代码实例
Feb 25 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
python中判断文件结束符的具体方法
Aug 04 Python
Python使用tkinter实现小时钟效果
Feb 22 Python
Python学习之时间包使用教程详解
Mar 21 Python
python脚本内运行linux命令的方法
Jul 02 #Python
举例区分Python中的浅复制与深复制
Jul 02 #Python
Python多进程机制实例详解
Jul 02 #Python
Python回调函数用法实例详解
Jul 02 #Python
在Python中marshal对象序列化的相关知识
Jul 01 #Python
python保存字符串到文件的方法
Jul 01 #Python
python选择排序算法实例总结
Jul 01 #Python
You might like
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
smtp邮件发送一例
2006/10/09 PHP
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
PHP HTML代码串截取代码
2008/12/29 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
PHP实现文件下载详解
2014/11/27 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
JS常见算法详解
2017/02/28 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
详解Python发送邮件实例
2016/01/10 Python
Python读大数据txt
2016/03/28 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
自我介绍演讲稿
2014/01/15 职场文书
团日活动策划书
2014/02/01 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
质量保证书怎么写
2015/02/27 职场文书
副总经理岗位职责范本
2015/04/08 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
我的收音机情缘
2022/04/05 无线电
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS