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的函数嵌套的使用方法
Jan 24 Python
Python psutil模块简单使用实例
Apr 28 Python
浅谈Python浅拷贝、深拷贝及引用机制
Dec 15 Python
python实现redis三种cas事务操作
Dec 19 Python
python进行两个表格对比的方法
Jun 27 Python
python微信公众号之关注公众号自动回复
Oct 25 Python
Python拼接字符串的7种方法总结
Nov 01 Python
Python求均值,方差,标准差的实例
Jun 29 Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 Python
python解析yaml文件过程详解
Aug 30 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 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的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
深入array multisort排序原理的详解
2013/06/18 PHP
CI框架常用函数封装实例
2016/11/21 PHP
js 操作css实现代码
2009/06/11 Javascript
caller和callee的区别介绍及演示结果
2013/03/10 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
python字符串的常用操作方法小结
2016/05/21 Python
利用aardio给python编写图形界面
2017/08/21 Python
python requests 使用快速入门
2017/08/31 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
销售工作人员的自我评价分享
2013/11/10 职场文书
小学生期末自我鉴定
2014/01/19 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
借款民事起诉状范文
2015/05/19 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS
Python中time标准库的使用教程
2022/04/13 Python
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android