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 相关文章推荐
使用graphics.py实现2048小游戏
Mar 10 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
python3编码问题汇总
Sep 06 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
微信跳一跳小游戏python脚本
Jan 05 Python
Python简单定义与使用二叉树示例
May 11 Python
python微元法计算函数曲线长度的方法
Nov 08 Python
pandas修改DataFrame列名的实现方法
Feb 22 Python
Python面向对象之类和实例用法分析
Jun 08 Python
python opencv 简单阈值算法的实现
Aug 04 Python
numpy按列连接两个维数不同的数组方式
Dec 06 Python
Tensorflow不支持AVX2指令集的解决方法
Feb 03 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
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
php按单词截取字符串的方法
2015/04/07 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
一些javascript一些题目的解析
2010/12/25 Javascript
js 利用className得到对象的实现代码
2011/11/15 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
2012/03/14 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
js实现内容显示并使用json传输数据
2016/03/16 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
jQuery返回定位插件详解
2017/05/15 jQuery
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
AngularJs1.x自定义指令独立作用域的函数传入参数方法
2018/10/09 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
详解Python IO口多路复用
2020/06/17 Python
python高级特性简介
2020/08/13 Python
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
酒店服务实习自我鉴定
2013/09/22 职场文书
酒店司机岗位职责
2013/12/14 职场文书
施工班组长岗位职责
2014/01/05 职场文书
教师考核评语
2014/04/28 职场文书
邀请书格式范文
2015/02/02 职场文书
行政介绍信范文
2015/05/04 职场文书
css弧边选项卡的项目实践
2023/05/07 HTML / CSS