利用Python将阿拉伯数字转化为中文大写,其实最麻烦的地方就是中间空多个0的问题,这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小数部分,再对整数部分按照仟、万、亿、兆分位拆分为四个字符串组成的List,每个字符串最多4个字符,然后对每个分位的字符串用大写函数转换成大写,最后合并,这样等于缩减了问题,处理就相对简单了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
#算法说明:要求字符串输入,现将字符串差费为整数部分和小数部分生成list[整数部分,小数部分]
#将整数部分拆分为:[亿,万,仟]三组字符串组成的List:['0000','0000','0000'](根据实际输入生成阶梯List)
#例如:600190000010.70整数部分拆分为:['600','1900','0010']
#然后对list中每个字符串分组进行大写化再合并
#最后处理小数部分的大写化
'''
class cnumber:
    cdict={}
    gdict={}
    xdict={}
    def __init__(self):
        self.cdict={1:u'',2:u'',3:u'',4:u'仟'}
        self.xdict={1:u'元',2:u'万',3:u'亿',4:u'兆'#数字标识符
        self.gdict={0:u'零',1:u'壹',2:u'贰',3:u'叁',4:u'肆',5:u'伍',6:u'陆',7:u'柒',8:u'捌',9:u'玖'}     
    def csplit(self,cdata): #拆分函数,将整数字符串拆分成[亿,万,仟]的list
        g=len(cdata)%4
        csdata=[]
        lx=len(cdata)-1
        if g>0:
            csdata.append(cdata[0:g])
        k=g
        while k<=lx:
            csdata.append(cdata[k:k+4])
            k+=4
        return csdata
               
    def cschange(self,cki): #对[亿,万,仟]的list中每个字符串分组进行大写化再合并
        lenki=len(cki)
        i=0
        lk=lenki
        chk=u''
        for in range(lenki):
            if int(cki[i])==0:
                if i<lenki-1:
                    if int(cki[i+1])!=0:
                        chk=chk+self.gdict[int(cki[i])]                  
            else:
                chk=chk+self.gdict[int(cki[i])]+self.cdict[lk]
            lk-=1
        return chk
                   
    def cwchange(self,data):
        cdata=str(data).split('.')
        cki=cdata[0]
        if len(cdata)==1:
            i=0
            chk=u''
            cski=self.csplit(cki) #分解字符数组[亿,万,仟]三组List:['0000','0000','0000']
            ikl=len(cski) #获取拆分后的List长度
            #大写合并
            for in range(ikl):
                if self.cschange(cski[i])=='': #有可能一个字符串全是0的情况
                    chk=chk+self.cschange(cski[i]) #此时不需要将数字标识符引入
                else:
                    chk=chk+self.cschange(cski[i])+self.xdict[ikl-i] #合并:前字符串大写+当前字符串大写+标识符
            chk=chk+u'整'
        else:
            i=0
            chk=u''
            cski=self.csplit(cki) #分解字符数组[亿,万,仟]三组List:['0000','0000','0000']
            ikl=len(cski) #获取拆分后的List长度
            #大写合并
            for in range(ikl):
                if self.cschange(cski[i])=='': #有可能一个字符串全是0的情况
                    chk=chk+self.cschange(cski[i]) #此时不需要将数字标识符引入
                else:
                    chk=chk+self.cschange(cski[i])+self.xdict[ikl-i] #合并:前字符串大写+当前字符串大写+标识符
            #处理小数部分
            ckj=cdata[1]
            lenkj=len(ckj)
            if lenkj==1#若小数只有1位
                if int(ckj[0])==0:
                    chk=chk+u'整'
                else:
                    chk=chk+self.gdict[int(ckj[0])]+u'角整'
            else#若小数有两位的四种情况
                if int(ckj[0])==0 and int(ckj[1])!=0:
                    chk=chk+u'零'+self.gdict[int(ckj[1])]+u'分'
                elif int(ckj[0])==0 and int(ckj[1])==0:
                    chk=chk+u'整'
                elif int(ckj[0])!=0 and int(ckj[1])!=0:
                    chk=chk+self.gdict[int(ckj[0])]+u'角'+self.gdict[int(ckj[1])]+u'分'
                else:
                    chk=chk+self.gdict[int(ckj[0])]+u'角整'
        return chk
if __name__=='__main__':
    pt=cnumber()
    print pt.cwchange('123410505632.09').encode('utf-8')

本文参照网上的一些写法做了一些改动,使用起来更加严谨。

本文转自 lover00751CTO博客,原文链接:http://blog.51cto.com/wangwei007/1223368,如需转载请自行联系原作者

Python将阿拉伯数字转化为中文大写相关推荐

  1. 输入数字怎么变成大写python_Python将阿拉伯数字转化为中文大写

    利用Python将阿拉伯数字转化为中文大写,其实最麻烦的地方就是中间空多个0的问题,这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小 数部分,再对整数部分按照仟.万.亿.兆分位拆分为四个字 ...

  2. c语言阿拉伯数字转大写,c++阿拉伯数字转化为中文大写

    新手就是新手,这样一个看似简单的程序也想了好多天,最后还是看了提示,琢磨了一阵才写出来的.(提示是将阿拉伯数字从右到左,每四个分为一组,再将每一组转化为几仟几佰几拾几的形式,再将他们组合成为万,亿兆的 ...

  3. 阿拉伯数字转化为中文大写

    var alabo = function (num) {if (isNaN(Number(num))) {return;};let tmpnewchar = ''; // 最后结果let numStr ...

  4. python 怎么将数字转大写_Python将数字转化为中文大写的实例代码

    Python将阿拉伯数字转化为中文大写,关键点在于中间空多个0的问题. 这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小数部分,再对整数部分按照仟.万.亿.兆分位拆分为四个字符串组成的Li ...

  5. 【工具封装】Python 实现将阿拉伯数字 === 转换成中文大写数字

    一.序言:   工具封装第四弹,阿拉伯数字 ===> 转换成 ===> 中文大写数字,喜欢就赶紧收藏+点赞+关注吧 !!! ---- Nick.Peng 二.实现代码如下: #!/usr/ ...

  6. 把阿拉伯数字翻译成中文大写数字

    package com.zcw.zcwbook.demo15;/*** @program: zcwbook* @description: 把阿拉伯数字翻译成中文大写数字* @author: zhaoc ...

  7. python练习题--阿拉伯数字转换成中文数字

    python练习题–阿拉伯数字转换成中文数字 用户输入任意阿拉伯数字,如[123456],把它转换成中文数字[壹拾贰万叁仟肆佰伍拾陆] 以前面试时面试官问的问题,当时没能答出来,今天初步解决,把它记录 ...

  8. 将一组阿拉伯数字转换成中文大写数字

    题目大概:  将一组阿拉伯数字转换成中文大写数字  52306 ==> 伍万贰千叁百零陆 我实现了将文件中的一组数字(每行为一个数)  形如: Java代码   25364 466932300 ...

  9. 关于JAVA阿拉伯数字替换为中文大写

    话不多说,直接上代码 public static void NunOrChina2(Scanner scan) { boolean flag = true;     while (flag){ Str ...

最新文章

  1. Centos 7下编译安装Apache
  2. JavaFX鼠标滚动放大缩小图片
  3. CF16A Flag
  4. 放大缩小保证div对齐_NFS Write IO 不对齐深度分析
  5. 彩票抽奖(洛谷P2550题题解,Java语言描述)
  6. java删除表操作,JDBC删除表实例
  7. oracle常见受权与回收权限 grant和revoke
  8. NameValueCollection Dictionary区别
  9. div+css格式规范
  10. OpenCV-Python教程(10、直方图均衡化)
  11. 高等数学 · 希腊符号
  12. php网页部分截图,关于php:PHP实现网页截图
  13. js中小括号()的用法详解
  14. 怎样在知网下载PDF版本的硕博士论文
  15. LeetCode - 486. Predict the Winner(排成一条线的纸牌博弈问题)
  16. 计算机点了注销有办法恢复吗,微信注销了还能恢复吗 账号注销了还能恢复吗...
  17. 安徽科技学院 信网学院网络文化节 张乐
  18. python为什么那么好看_为什么Python代码要写得美观而明确
  19. 业务管理新思维-恒润基合同管理系统
  20. 关于研究生规划的困惑

热门文章

  1. 原生js的JSONP跨域请求
  2. IOS APP程序发布IPA以及发布上传到AppStore
  3. 2021年跨境电商行业相关数据
  4. c语言 编程显示图案*,C语言中怎么编程在计算机屏幕上显示如下图案?
  5. 攀藤PM2.5传感器使用定义串口usb数据接收
  6. 记录:mysql的binlog日志开启与数据恢复
  7. 怎么验证mysql安装成功_mysql如何验证是否安装成功
  8. Spring Security登录成功后重定向到登陆前页面 解决方案
  9. SpringSecurity自定义认证成功处理器
  10. win10便签常驻桌面_Win 10最好用的10个功能,第一个你就不知道!