python数字转对应中文的方法总结


Posted in Python onAugust 02, 2021

本文操作环境:

windows7系统,DELL G3电脑,python3.5版

python实现将阿拉伯数字转换成中文

第一种转换方式:

1  -->  一
    12   -->  一二
def num_to_char(num):
    """数字转中文"""
    num=str(num)
    new_str=""
    num_dict={"0":u"零","1":u"一","2":u"二","3":u"三","4":u"四","5":u"五","6":u"六","7":u"七","8":u"八","9":u"九"}
    listnum=list(num)
    # print(listnum)
    shu=[]
    for i in listnum:
        # print(num_dict[i])
        shu.append(num_dict[i])
    new_str="".join(shu)
    # print(new_str)
    return new_str

第二种转换方式:

1   -->   一
    12  -->   十二
    23  -->  二十三
_MAPPING = (u'零', u'一', u'二', u'三', u'四', u'五', u'六', u'七', u'八', u'九', u'十', u'十一', u'十二', u'十三', u'十四', u'十五', u'十六', u'十七',u'十八', u'十九')
_P0 = (u'', u'十', u'百', u'千',)
_S4 = 10 ** 4
def _to_chinese4(num):
    assert (0 <= num and num < _S4)
    if num < 20:
        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):
            val = int(val)
            if val != 0:
                result += _P0[idx] + _MAPPING[val]
                if idx < c - 1 and lst[idx + 1] == 0:
                    result += u'零'
        return result[::-1]

实例扩展:

#!/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数字怎么转对应中文的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python实现清屏的方法
Apr 30 Python
Python的面向对象编程方式学习笔记
Jul 12 Python
python实现简易云音乐播放器
Jan 04 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
基于scrapy的redis安装和配置方法
Jun 13 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
Python3 A*寻路算法实现方式
Dec 24 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 Python
Python内置数据类型中的集合详解
Mar 18 Python
Python List remove()实例用法详解
Aug 02 #Python
Python中基础数据类型 set集合知识点总结
Aug 02 #Python
python unittest单元测试的步骤分析
Aug 02 #Python
python元组打包和解包过程详解
Aug 02 #Python
python字典进行运算原理及实例分享
Aug 02 #Python
Python中可变和不可变对象的深入讲解
Python基础数据类型tuple元组的概念与用法
Aug 02 #Python
You might like
几个学习PHP的网址
2006/11/25 PHP
用header 发送cookie的php代码
2007/03/16 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
php析构函数的简单使用说明
2015/08/24 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
vue初尝试--项目结构(推荐)
2018/01/30 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
python实现扫描日志关键字的示例
2018/04/28 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
python实现滑雪者小游戏
2020/02/22 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
Java面试题及答案
2012/09/08 面试题
新闻专业应届生求职信
2013/10/31 职场文书
财务负责人任命书
2014/06/06 职场文书
教师求职信
2014/06/17 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
2014年文员工作总结
2014/11/18 职场文书
优秀党员申报材料
2014/12/18 职场文书
质量保证书格式
2015/02/27 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书