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基础教程之基本内置数据类型介绍
Feb 20 Python
python集合用法实例分析
May 30 Python
python daemon守护进程实现
Aug 27 Python
浅谈python numpy中nonzero()的用法
Apr 02 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
Python shelve模块实现解析
Aug 28 Python
python中的数组赋值与拷贝的区别详解
Nov 26 Python
python socket通信编程实现文件上传代码实例
Dec 14 Python
python导入库的具体方法
Jun 18 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 Python
详解Python 中的容器 collections
Aug 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广告加载类用法实例
2014/09/23 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
JavaScript中的函数声明和函数表达式区别浅析
2015/03/27 Javascript
javascript禁止超链接跳转的方法
2016/02/02 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
原生JavaScript实现随机点名表
2021/01/14 Javascript
python使用循环实现批量创建文件夹示例
2014/03/25 Python
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python中的两个内置模块介绍
2015/04/05 Python
Python读取sqlite数据库文件的方法分析
2017/08/07 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
市场营销管理制度
2014/01/29 职场文书
业务员自荐信范文
2014/04/20 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
搞笑车尾标语
2014/06/23 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
企业投资意向书
2015/05/09 职场文书
研讨会致辞
2015/07/31 职场文书
python 爬取天气网卫星图片
2021/06/07 Python
Django模型层实现多表关系创建和多表操作
2021/07/21 Python
Java使用Unsafe类的示例详解
2021/09/25 Java/Android