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中解析XML数据的方法
Oct 15 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
python Pillow图像处理方法汇总
Oct 16 Python
在Python中使用MongoEngine操作数据库教程实例
Dec 03 Python
python实现回旋矩阵方式(旋转矩阵)
Dec 04 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
Dec 09 Python
如何基于python操作json文件获取内容
Dec 24 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 Python
Python3+selenium配置常见报错解决方案
Aug 28 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
Python实现自动整理文件的脚本
Dec 17 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输出Excel文件类
2010/02/08 PHP
php去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
2015/06/10 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
python进阶教程之动态类型详解
2014/08/30 Python
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
Python实现求笛卡尔乘积的方法
2017/09/16 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
python实现批量图片格式转换
2020/06/16 Python
python实现猜单词小游戏
2020/05/22 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
简历的自我评价范文
2014/02/04 职场文书
品牌宣传方案
2014/03/21 职场文书
企业宣传工作方案
2014/06/02 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
小数乘法教学反思
2016/02/22 职场文书
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python