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 搭建Web站点之Web服务器网关接口
Nov 06 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
python3 爬取图片的实例代码
Nov 06 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
python消费kafka数据批量插入到es的方法
Dec 27 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
Django框架视图介绍与使用详解
Jul 18 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
基于Python3读写INI配置文件过程解析
Jul 23 Python
详解Python调用系统命令的六种方法
Jan 28 Python
Python入门之使用pandas分析excel数据
May 12 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安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
利用JS制作万年历的方法
2017/08/16 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
Python何时应该使用Lambda函数
2019/07/02 Python
通过实例解析Python调用json模块
2019/12/11 Python
详解Python 中的容器 collections
2020/08/17 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
开办加工厂创业计划书
2014/01/03 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
教师师德承诺书
2014/03/26 职场文书
婚前保证书
2014/04/29 职场文书
电子信息工程自荐信
2014/05/26 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
客房部经理岗位职责
2015/02/02 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
工作报告范文
2019/06/20 职场文书