Python实现中文数字转换为阿拉伯数字的方法示例


Posted in Python onMay 26, 2017

本文实例讲述了Python实现中文数字转换为阿拉伯数字的方法。分享给大家供大家参考,具体如下:

一、需求

今天写了三千二百行代码。
今天写了3200行代码。

两行意思相同,只是表达方式不太能够,统一掉。

二、原理

数字的特征是   数字 + 单位,例如三百,四十二,九千零二
可以从后往前遍历,遇到的是0到9的数字,就乘以前一位的单位,遇到新的单位(十百千万)就替换成数字供下一个数字用。

三、举例

五百四十三
1. 三-->3 3 <10 : total = 3
2. 十-->10, 10 ≥10,且不为0 : r = 10
3. 四-->4, 4<10 : total = 3 + 4*10 = 43
4. 百-->100, 10 0≥10,且不为0 : r = 100
5. 五-->5, 5<10 : total = 43 + 5*100 = 543

四、参考代码

#-*- coding: cp936 -*-
import re
import string
common_used_numerals_tmp ={'零':0, '一':1, '二':2, '两':2, '三':3, '四':4, '五':5, '六':6, '七':7, '八':8, '九':9, '十':10, '百':100, '千':1000, '万':10000, '亿':100000000}
common_used_numerals = {}
for key in common_used_numerals_tmp:
  common_used_numerals[key.decode('cp936')] = common_used_numerals_tmp[key]
def chinese2digits(uchars_chinese):
  total = 0
  r = 1              #表示单位:个十百千...
  for i in range(len(uchars_chinese) - 1, -1, -1):
    val = common_used_numerals.get(uchars_chinese[i])
    if val >= 10 and i == 0:  #应对 十三 十四 十*之类
      if val > r:
        r = val
        total = total + val
      else:
        r = r * val
        #total =total + r * x
    elif val >= 10:
      if val > r:
        r = val
      else:
        r = r * val
    else:
      total = total + r * val
  return total
print chinese2digits('两百三十二'.decode('cp936'))
print "-------------------------"
print chinese2digits('十二'.decode('cp936'))
print "-------------------------"
print chinese2digits('一亿零八万零三百二十三'.decode('cp936'))

结果:

Python实现中文数字转换为阿拉伯数字的方法示例

Python 相关文章推荐
详谈python http长连接客户端
Jun 12 Python
分析Python中解析构建数据知识
Jan 20 Python
wxpython实现图书管理系统
Mar 12 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
Python控制Firefox方法总结
Jun 03 Python
Python pandas用法最全整理
Aug 04 Python
python如何通过闭包实现计算器的功能
Feb 22 Python
Python中关于logging模块的学习笔记
Jun 03 Python
python的flask框架难学吗
Jul 31 Python
python 实现端口扫描工具
Dec 18 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
python工具dtreeviz决策树可视化和模型可解释性
Mar 03 Python
Python简单网络编程示例【客户端与服务端】
May 26 #Python
Python编程对列表中字典元素进行排序的方法详解
May 26 #Python
利用Python实现网络测试的脚本分享
May 26 #Python
python 如何快速找出两个电子表中数据的差异
May 26 #Python
详解Python3操作Mongodb简明易懂教程
May 25 #Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 #Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 #Python
You might like
PHP 文件扩展名 获取函数
2009/06/03 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
javascript的函数作用域
2014/11/12 Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
2015/06/19 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
python中的逆序遍历实例
2019/12/25 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
幼师自荐信范文
2013/10/06 职场文书
高中三年学习生活的自我评价
2013/10/10 职场文书
财务会计专业个人求职信范本
2014/01/08 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
医学生自荐信范文
2015/03/05 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
领导离职感言
2015/08/03 职场文书