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抓取京东图书评论数据
Aug 31 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
python实现发送和获取手机短信验证码
Jan 15 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
简单了解Django ContentType内置组件
Jul 23 Python
Python turtle绘画象棋棋盘
Aug 21 Python
使用PyTorch训练一个图像分类器实例
Jan 08 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
PyCharm Community安装与配置的详细教程
Nov 24 Python
Python实现排序方法常见的四种
Jul 15 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
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
关于viewport,Ext.panel和Ext.form.panel的关系
2009/05/07 Javascript
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
vue axios用法教程详解
2017/07/23 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
小程序红包雨的实现示例
2019/02/19 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
Python连接SQLServer2000的方法详解
2017/04/19 Python
django输出html内容的实例
2018/05/27 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
Python 异步协程函数原理及实例详解
2019/11/13 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
物业招聘计划书
2014/01/10 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
2015年纪委工作总结
2015/05/13 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
Python机器学习实战之k-近邻算法的实现
2021/11/27 Python
Win11任务栏无法正常显示 资源管理器不停重启的解决方法
2022/07/07 数码科技