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 相关文章推荐
python网络编程学习笔记(九):数据库客户端 DB-API
Jun 09 Python
跟老齐学Python之私有函数和专有方法
Oct 24 Python
Python中super的用法实例
May 28 Python
详谈python http长连接客户端
Jun 12 Python
python 读取txt,json和hdf5文件的实例
Jun 05 Python
浅谈Series和DataFrame中的sort_index方法
Jun 07 Python
pandas 对series和dataframe进行排序的实例
Jun 09 Python
pip 安装库比较慢的解决方法(国内镜像)
Oct 06 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
django项目中新增app的2种实现方法
Apr 01 Python
Python Opencv实现单目标检测的示例代码
Sep 08 Python
如何使用Python进行PDF图片识别OCR
Jan 22 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
PHP4之真OO
2006/10/09 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
php批量上传的实现代码
2013/06/09 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
JS实现title标题栏文字不间断滚动显示效果
2016/09/07 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
2017/03/10 Javascript
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
Python 性能优化技巧总结
2016/11/01 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
zooplus意大利:在线宠物商店
2019/08/07 全球购物
幼儿园消防安全制度
2014/01/26 职场文书
决心书范文
2014/03/11 职场文书
对孩子的寄语
2014/04/09 职场文书
公司新人试用期自我评价
2014/09/17 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
律师授权委托书范本
2014/10/07 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
python如何进行基准测试
2021/04/26 Python
Python基础详解之邮件处理
2021/04/28 Python