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聚类算法之DBSACN实例分析
Nov 20 Python
python中常用的九种预处理方法分享
Sep 11 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
Python语言描述连续子数组的最大和
Jan 04 Python
python计算列表内各元素的个数实例
Jun 29 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
详解PANDAS 数据合并与重塑(join/merge篇)
Jul 09 Python
django 消息框架 message使用详解
Jul 22 Python
Pycharm远程调试原理及具体配置详解
Aug 08 Python
Python常用编译器原理及特点解析
Mar 23 Python
python 提高开发效率的5个小技巧
Oct 19 Python
python创建字典及相关管理操作
Apr 13 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最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
33种Javascript 表格排序控件收集
2009/12/03 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
JavaScript中Function详解
2015/02/27 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
小程序实现多选框功能
2018/10/30 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
python赋值操作方法分享
2013/03/23 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Python中偏函数用法示例
2018/06/07 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
2018/11/20 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
管理站站长岗位职责
2013/11/27 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
便利店投资创业计划书
2014/02/08 职场文书
反邪教标语
2014/06/23 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
办公楼租房协议书范本
2014/11/25 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS