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中optparse模块使用浅析
Jan 01 Python
在Python的setuptools框架下生成egg的教程
Apr 13 Python
Python中super的用法实例
May 28 Python
python通过socket实现多个连接并实现ssh功能详解
Nov 08 Python
Python TestCase中的断言方法介绍
May 02 Python
Python如何实现转换URL详解
Jul 02 Python
Python实现时间序列可视化的方法
Aug 06 Python
Python 模拟生成动态产生验证码图片的方法
Feb 01 Python
python的链表基础知识点
Sep 13 Python
python map比for循环快在哪
Sep 21 Python
教你用Python matplotlib库制作简单的动画
Jun 11 Python
Python 文字识别
May 11 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中执行cmd命令的方法
2014/10/11 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
一个基于jquery的图片切换效果
2010/07/06 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
基于javascript实现按圆形排列DIV元素(一)
2016/12/02 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
简述pm2常用命令集合及配置文件说明
2019/05/30 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python多项式回归的实现方法
2019/03/11 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
义诊活动总结
2015/02/04 职场文书
消费者投诉书范文
2015/07/02 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
python解决12306登录验证码的实现
2021/04/18 Python