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多进程编程技术实例分析
Sep 16 Python
Python处理JSON数据并生成条形图
Aug 05 Python
python技能之数据导出excel的实例代码
Aug 11 Python
Python给你的头像加上圣诞帽
Jan 04 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
NumPy 数学函数及代数运算的实现代码
Jul 18 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
浅谈Python基础—判断和循环
Mar 22 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
May 29 Python
python hashlib加密实现代码
Oct 17 Python
通过Python扫描代码关键字并进行预警的实现方法
May 24 Python
python七种方法判断字符串是否包含子串
Aug 18 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 来访国内外IP判断代码并实现页面跳转
2009/12/18 PHP
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
PHP5函数小全(分享)
2013/06/06 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
jquery 可排列的表实现代码
2009/11/13 Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
2013/10/15 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
js实现水平滚动菜单导航
2017/07/21 Javascript
vue 优化CDN加速的方法示例
2018/09/19 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
js调用网络摄像头的方法
2020/12/05 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
Python的Django框架中的数据库配置指南
2015/07/17 Python
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
Python绘制组合图的示例
2020/09/18 Python
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
Ref与out有什么不同
2012/11/24 面试题
八荣八耻演讲稿
2014/09/15 职场文书
会计出纳岗位职责
2015/03/31 职场文书
无工作证明怎么写
2015/06/15 职场文书
新兵入伍决心书
2015/09/22 职场文书
学校教代会开幕词
2016/03/04 职场文书
五年级作文之想象作文
2019/10/30 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python