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 15 Python
详解python之简单主机批量管理工具
Jan 27 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
May 31 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
python交易记录链的实现过程详解
Jul 03 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
Jul 11 Python
django实现类似触发器的功能
Nov 15 Python
python绘制彩虹图
Dec 16 Python
pycharm如何实现跨目录调用文件
Feb 28 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
python绘图pyecharts+pandas的使用详解
Dec 13 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 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的特殊设置
2006/10/09 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
微信小程序实现左右联动的实战记录
2018/07/05 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
对Python中range()函数和list的比较
2018/04/19 Python
python计算两个地址之间的距离方法
2018/06/09 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
查看python安装路径及pip安装的包列表及路径
2019/04/03 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
木马的传播途径主要有哪些
2016/04/08 面试题
文明餐桌行动实施方案
2014/02/19 职场文书
师德师风建设方案
2014/05/08 职场文书
2014优秀大学生简历自我评价
2014/09/15 职场文书
房产授权委托书范本
2014/09/22 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫
「月刊Action」2022年5月号封面公开
2022/03/21 日漫