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 30 Python
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
python多进程和多线程究竟谁更快(详解)
May 29 Python
python正则中最短匹配实现代码
Jan 16 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
pytorch多GPU并行运算的实现
Sep 27 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 Python
python实现web邮箱扫描的示例(附源码)
Mar 30 Python
利用Python判断整数是否是回文数的3种方法总结
Jul 07 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
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
php通过各种函数判断0和空
2020/07/04 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
vue实现动态数据绑定
2017/04/28 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
Python中List.count()方法的使用教程
2015/05/20 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
python创建学生管理系统
2019/11/22 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
2020/06/22 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
教师节联欢会主持词
2015/07/04 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
mysql函数全面总结
2021/11/11 MySQL