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中的异常处理简明介绍
Apr 13 Python
Pthon批量处理将pdb文件生成dssp文件
Jun 21 Python
Python中Django 后台自定义表单控件
Mar 28 Python
python爬虫获取多页天涯帖子
Feb 23 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
在python里从协程返回一个值的示例
Feb 19 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
Python collections模块使用方法详解
Aug 28 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
Feb 20 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
Aug 07 Python
python生成随机数、随机字符、随机字符串
Apr 06 Python
Python借助with语句实现代码段只执行有限次
Mar 23 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/05 新手入门
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
Element-UI Table组件上添加列拖拽效果实现方法
2018/04/14 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
详解vue-video-player使用心得(兼容m3u8)
2019/08/23 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
python pdb调试方法分享
2014/01/21 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
python实现list由于numpy array的转换
2018/04/04 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
Python 从attribute到property详解
2020/03/05 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
综合素质的自我鉴定
2013/10/07 职场文书
留学推荐信怎么写
2014/01/25 职场文书
《口技》教学反思
2014/02/21 职场文书
科技之星事迹材料
2014/06/02 职场文书
反洗钱宣传活动总结
2014/08/26 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
教师旷工检讨书
2015/08/15 职场文书
银行求职信范文
2019/05/13 职场文书