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脚本来获取Google搜索结果的示例
May 04 Python
Python中List.index()方法的使用教程
May 20 Python
Python实现网站注册验证码生成类
Jun 08 Python
Python列表解析配合if else的方法
Jun 23 Python
Python SQL查询并生成json文件操作示例
Aug 17 Python
Python判断有效的数独算法示例
Feb 23 Python
Python实现使用request模块下载图片demo示例
May 24 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
python正则表达式实例代码
Mar 03 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
Python标准库pathlib操作目录和文件
Nov 20 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利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
JavaScript的parseInt 进制问题
2009/05/07 Javascript
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
javascript 精粹笔记
2010/05/09 Javascript
jquery入门—选择器实现隔行变色实例代码
2013/01/04 Javascript
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
Python写的Socks5协议代理服务器
2014/08/06 Python
Python基于whois模块简单识别网站域名及所有者的方法
2018/04/23 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
校园环境卫生倡议书
2015/04/29 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
Golang中异常处理机制详解
2021/06/08 Golang