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 Web框架Flask中使用百度云存储BCS实例
Feb 08 Python
Django实现图片文字同时提交的方法
May 26 Python
python开发之thread线程基础实例入门
Nov 11 Python
Python Queue模块详细介绍及实例
Dec 27 Python
Python读取word文本操作详解
Jan 22 Python
python 将md5转为16字节的方法
May 29 Python
基于python调用psutil模块过程解析
Dec 20 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
Django框架获取form表单数据方式总结
Apr 22 Python
Python如何用wx模块创建文本编辑器
Jun 07 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
详解Flask开发技巧之异常处理
Jun 15 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
杏林同学录(二)
2006/10/09 PHP
PHP删除数组中的特定元素的代码
2012/06/28 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
2011/10/19 Javascript
你需要知道的10个最佳javascript开发实践小结
2012/04/15 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
Django实现表单验证
2018/09/08 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
python requests指定出口ip的例子
2019/07/25 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
C语言笔试集
2012/07/24 面试题
java程序员面试交流
2012/11/29 面试题
2015年教务主任工作总结
2015/07/22 职场文书
工作自我评价范文
2019/03/21 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书