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数据结构之列表和元组的详解
Sep 23 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 Python
python 自定义对象的打印方法
Jan 12 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
Flask框架 CSRF 保护实现方法详解
Oct 30 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
flask开启多线程的具体方法
Aug 02 Python
python实现AdaBoost算法的示例
Oct 03 Python
python 删除系统中的文件(按时间,大小,扩展名)
Nov 19 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
Dec 07 Python
Python基础之pandas数据合并
Apr 27 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 gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
使用php get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
js+css在交互上的应用
2010/07/18 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
js的.innerHTML = &quot;&quot;IE9下显示有错误的解决方法
2013/09/16 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
Javascript递归打印Document层次关系实例分析
2015/05/15 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
bootstrap table实例详解
2017/01/06 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
python和c语言哪个更适合初学者
2020/06/22 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
大学生创业计划书的格式要求
2013/12/29 职场文书
写给保洁员表扬信
2014/01/08 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
初中班主任教育随笔
2015/08/15 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
关于python爬虫应用urllib库作用分析
2021/09/04 Python