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类的基础入门知识
Nov 24 Python
Python 文件重命名工具代码
Jul 26 Python
Python抓取Discuz!用户名脚本代码
Dec 30 Python
python+matplotlib绘制3D条形图实例代码
Jan 17 Python
python使用Matplotlib绘制分段函数
Sep 25 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
解析python实现Lasso回归
Sep 11 Python
浅析Python3 pip换源问题
Jan 06 Python
Tensorflow 多线程设置方式
Feb 06 Python
Anaconda+Pycharm环境下的PyTorch配置方法
Mar 13 Python
pycharm 实现本地写代码,服务器运行的操作
Jun 08 Python
python raise的基本使用
Sep 10 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中动态显示签名和ip原理
2007/03/28 PHP
php获取当前网址url并替换参数或网址的方法
2010/06/06 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
php实现异步数据调用的方法
2015/12/24 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
js内置对象 学习笔记
2011/08/01 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
nodejs中实现sleep功能实例
2015/03/24 NodeJs
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
python sys模块sys.path使用方法示例
2013/12/04 Python
在Pycharm中执行scrapy命令的方法
2019/01/16 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
python gdal安装与简单使用
2019/08/01 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
世界上最大的二手相机店:KEN
2017/05/17 全球购物
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
init进程的作用
2015/08/20 面试题
秋季婚礼证婚词
2014/01/11 职场文书
个人贷款承诺书
2014/03/28 职场文书
Python 内置函数速查表一览
2021/06/02 Python
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL