Python将阿拉伯数字转化为中文大写
利用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 i 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 i 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 i 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将阿拉伯数字转化为中文大写相关推荐
- 输入数字怎么变成大写python_Python将阿拉伯数字转化为中文大写
利用Python将阿拉伯数字转化为中文大写,其实最麻烦的地方就是中间空多个0的问题,这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小 数部分,再对整数部分按照仟.万.亿.兆分位拆分为四个字 ...
- c语言阿拉伯数字转大写,c++阿拉伯数字转化为中文大写
新手就是新手,这样一个看似简单的程序也想了好多天,最后还是看了提示,琢磨了一阵才写出来的.(提示是将阿拉伯数字从右到左,每四个分为一组,再将每一组转化为几仟几佰几拾几的形式,再将他们组合成为万,亿兆的 ...
- 阿拉伯数字转化为中文大写
var alabo = function (num) {if (isNaN(Number(num))) {return;};let tmpnewchar = ''; // 最后结果let numStr ...
- python 怎么将数字转大写_Python将数字转化为中文大写的实例代码
Python将阿拉伯数字转化为中文大写,关键点在于中间空多个0的问题. 这种情况下,采用拆分法则,将一个大数字,先拆分成整数部分和小数部分,再对整数部分按照仟.万.亿.兆分位拆分为四个字符串组成的Li ...
- 【工具封装】Python 实现将阿拉伯数字 === 转换成中文大写数字
一.序言: 工具封装第四弹,阿拉伯数字 ===> 转换成 ===> 中文大写数字,喜欢就赶紧收藏+点赞+关注吧 !!! ---- Nick.Peng 二.实现代码如下: #!/usr/ ...
- 把阿拉伯数字翻译成中文大写数字
package com.zcw.zcwbook.demo15;/*** @program: zcwbook* @description: 把阿拉伯数字翻译成中文大写数字* @author: zhaoc ...
- python练习题--阿拉伯数字转换成中文数字
python练习题–阿拉伯数字转换成中文数字 用户输入任意阿拉伯数字,如[123456],把它转换成中文数字[壹拾贰万叁仟肆佰伍拾陆] 以前面试时面试官问的问题,当时没能答出来,今天初步解决,把它记录 ...
- 将一组阿拉伯数字转换成中文大写数字
题目大概: 将一组阿拉伯数字转换成中文大写数字 52306 ==> 伍万贰千叁百零陆 我实现了将文件中的一组数字(每行为一个数) 形如: Java代码 25364 466932300 ...
- 关于JAVA阿拉伯数字替换为中文大写
话不多说,直接上代码 public static void NunOrChina2(Scanner scan) { boolean flag = true; while (flag){ Str ...
最新文章
- Centos 7下编译安装Apache
- JavaFX鼠标滚动放大缩小图片
- CF16A Flag
- 放大缩小保证div对齐_NFS Write IO 不对齐深度分析
- 彩票抽奖(洛谷P2550题题解,Java语言描述)
- java删除表操作,JDBC删除表实例
- oracle常见受权与回收权限 grant和revoke
- NameValueCollection Dictionary区别
- div+css格式规范
- OpenCV-Python教程(10、直方图均衡化)
- 高等数学 · 希腊符号
- php网页部分截图,关于php:PHP实现网页截图
- js中小括号()的用法详解
- 怎样在知网下载PDF版本的硕博士论文
- LeetCode - 486. Predict the Winner(排成一条线的纸牌博弈问题)
- 计算机点了注销有办法恢复吗,微信注销了还能恢复吗 账号注销了还能恢复吗...
- 安徽科技学院 信网学院网络文化节 张乐
- python为什么那么好看_为什么Python代码要写得美观而明确
- 业务管理新思维-恒润基合同管理系统
- 关于研究生规划的困惑
热门文章
- 原生js的JSONP跨域请求
- IOS APP程序发布IPA以及发布上传到AppStore
- 2021年跨境电商行业相关数据
- c语言 编程显示图案*,C语言中怎么编程在计算机屏幕上显示如下图案?
- 攀藤PM2.5传感器使用定义串口usb数据接收
- 记录:mysql的binlog日志开启与数据恢复
- 怎么验证mysql安装成功_mysql如何验证是否安装成功
- Spring Security登录成功后重定向到登陆前页面 解决方案
- SpringSecurity自定义认证成功处理器
- win10便签常驻桌面_Win 10最好用的10个功能,第一个你就不知道!