Python实现把数字转换成中文


Posted in Python onJune 29, 2015

周末在家,写了个小程序,用于将阿拉伯数字转换化大写中文。程序没经过任何优化,出没经过详细的测试,挂到网上,方便将来有需要的时候直接拿来用。

#!/usr/bin/python
#-*- encoding: utf-8 -*-

import types

class NotIntegerError(Exception):
  pass

class OutOfRangeError(Exception):
  pass

_MAPPING = (u'零', u'一', u'二', u'三', u'四', u'五', u'六', u'七', u'八', u'九', )
_P0 = (u'', u'十', u'百', u'千', )
_S4, _S8, _S16 = 10 ** 4 , 10 ** 8, 10 ** 16
_MIN, _MAX = 0, 9999999999999999

def _to_chinese4(num):
  '''转换[0, 10000)之间的阿拉伯数字
  '''
  assert(0 <= num and num < _S4)
  if num < 10:
    return _MAPPING[num]
  else:
    lst = [ ]
    while num >= 10:
      lst.append(num % 10)
      num = num / 10
    lst.append(num)
    c = len(lst)  # 位数
    result = u''
    
    for idx, val in enumerate(lst):
      if val != 0:
        result += _P0[idx] + _MAPPING[val]
        if idx < c - 1 and lst[idx + 1] == 0:
          result += u'零'
    
    return result[::-1].replace(u'一十', u'十')
    
def _to_chinese8(num):
  assert(num < _S8)
  to4 = _to_chinese4
  if num < _S4:
    return to4(num)
  else:
    mod = _S4
    high, low = num / mod, num % mod
    if low == 0:
      return to4(high) + u'万'
    else:
      if low < _S4 / 10:
        return to4(high) + u'万零' + to4(low)
      else:
        return to4(high) + u'万' + to4(low)
      
def _to_chinese16(num):
  assert(num < _S16)
  to8 = _to_chinese8
  mod = _S8
  high, low = num / mod, num % mod
  if low == 0:
    return to8(high) + u'亿'
  else:
    if low < _S8 / 10:
      return to8(high) + u'亿零' + to8(low)
    else:
      return to8(high) + u'亿' + to8(low)
    
def to_chinese(num):
  if type(num) != types.IntType and type(num) != types.LongType:
    raise NotIntegerError(u'%s is not a integer.' % num)
  if num < _MIN or num > _MAX:
    raise OutOfRangeError(u'%d out of range[%d, %d)' % (num, _MIN, _MAX))
  
  if num < _S4:
    return _to_chinese4(num)
  elif num < _S8:
    return _to_chinese8(num)
  else:
    return _to_chinese16(num)
  
if __name__ == '__main__':
  print to_chinese(9000)
Python 相关文章推荐
Python下singleton模式的实现方法
Jul 16 Python
在Mac OS系统上安装Python的Pillow库的教程
Nov 20 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
Nov 17 Python
使用python将图片按标签分入不同文件夹的方法
Dec 08 Python
利用python numpy+matplotlib绘制股票k线图的方法
Jun 26 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
Sep 16 Python
如何基于Python实现自动扫雷
Jan 06 Python
Python 面向对象之类class和对象基本用法示例
Feb 02 Python
python实现网页录音效果
Oct 26 Python
python中yield的用法详解
Jan 13 Python
Python自然语言处理之切分算法详解
Apr 25 Python
Python中if __name__ == '__main__'作用解析
Jun 29 #Python
django接入新浪微博OAuth的方法
Jun 29 #Python
python链接Oracle数据库的方法
Jun 28 #Python
python写日志封装类实例
Jun 28 #Python
Python实现的简单hangman游戏实例
Jun 28 #Python
python实现矩阵乘法的方法
Jun 28 #Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 #Python
You might like
松下Panasonic RF-B65电路分析
2021/03/02 无线电
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
JavaScript中的集合及效率
2010/01/08 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
javascript常用方法汇总
2014/12/02 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
Python线性回归实战分析
2018/02/01 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
python 实现dict转json并保存文件
2019/12/05 Python
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
公务员政审材料范文
2014/12/23 职场文书
学雷锋活动简报
2015/07/20 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS