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 相关文章推荐
如何解决django配置settings时遇到Could not import settings 'conf.local'
Nov 18 Python
Python 抓取动态网页内容方案详解
Dec 25 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
浅谈插入排序算法在Python程序中的实现及简单改进
May 04 Python
python进程和线程用法知识点总结
May 28 Python
python中字典按键或键值排序的实现代码
Aug 27 Python
Python使用正则实现计算字符串算式
Dec 29 Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 Python
python 使用cx-freeze打包程序的实现
Mar 14 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
Python+Kepler.gl实现时间轮播地图过程解析
Jul 20 Python
python之pygame模块实现飞机大战完整代码
Nov 29 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
thinkphp框架实现数据添加和显示功能
2016/06/29 PHP
PHP的PDO错误与错误处理
2019/01/27 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
javascript实现的左右无缝滚动效果
2016/09/19 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
浅谈React之状态(State)
2018/09/19 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
Python实现的rsa加密算法详解
2018/01/24 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
GAP美国官网:美国休闲时尚品牌
2016/08/26 全球购物
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
戴森英国官网:Dyson英国
2019/05/07 全球购物
.net笔试题
2014/03/03 面试题
应届专科生个人的自我评价
2014/01/05 职场文书
教师专业自荐书范文
2014/02/10 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
班组长竞聘书
2014/03/31 职场文书
安全环保演讲稿
2014/08/28 职场文书
解除施工合同协议书
2014/10/17 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
mysql 获取相邻数据项
2022/05/11 MySQL