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中文编码那些事
Jun 25 Python
Python的Flask开发框架简单上手笔记
Nov 16 Python
python print 按逗号或空格分隔的方法
May 02 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
Mar 23 Python
pyqt 实现在Widgets中显示图片和文字的方法
Jun 13 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 Python
python实现的读取网页并分词功能示例
Oct 29 Python
Django choices下拉列表绑定实例
Mar 13 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
python网络编程之五子棋游戏
May 14 Python
TensorFlow-gpu和opencv安装详细教程
Jun 30 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开启安全模式后禁用的函数集合
2011/06/26 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
mongodb和php的用法详解
2019/03/25 PHP
PHP实现百度人脸识别
2019/05/06 PHP
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
移动端效果之Swiper详解
2017/10/09 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
Python操作qml对象过程详解
2019/09/26 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
Jupyter Notebook远程登录及密码设置操作
2020/04/10 Python
Pandas对每个分组应用apply函数的实现
2020/12/13 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
机械电子工程专业推荐信范文
2013/11/20 职场文书
房屋转让协议书
2014/04/11 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js
Python预测分词的实现
2021/06/18 Python
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python