python将数字转化为汉字
- 更新时间:2021-06-21 10:39:43
- 编辑:那温韦
给网友们整理相关的编程文章,网友宓美偲根据主题投稿了本篇教程内容,涉及到Python相关内容,已被413网友关注,涉猎到的知识点内容可以在下方电子书获得。
参考资料
- 《Python金融大数据分析》源代码 配套资源 / 366.72 KB / (德)希尔皮斯科,姚军 推荐度:
- 流利的Python语言 第2版(影印版) PDF 电子书 / 55.6 MB / Luciano Ramalho 推荐度:
- 《Python数据可视化》源码 配套资源 / 8.3 MB / 科斯?拉曼 推荐度:
- 21天学通Python PDF 电子书 / 58.3 MB / 刘凌霞,郝宁波,吴海涛 推荐度:
- python绝技:运用python成为顶级黑客 PDF 电子书 / 42 MB / TJO 推荐度:
正文内容
《python将数字转化为汉字》是一篇不错的Python文章,技术点分析的很透彻,改了一下错误代码,希望对网友有用。
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
1、转换思路
(1)将整数和小数分开。
(2)把四位数变成大写汉字。
(3)把两个小数字转换成x角x分。
(4)重复,转人民币大写。
2、实例
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('14524')) # 壹万肆仟伍佰贰拾肆元整
以上就是python将数字转化为汉字的方法,大家可以先就基本的转换思路进行理解,然后在实例代码中体会转换的操作。更多编程基础知识学习:python学习网
相关教程
-
python 基于DDT实现数据驱动测试
这篇文章主要介绍了python 基于DDT实现数据驱动测试的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
发布时间:2021-05-02
-
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
这篇文章主要介绍了Python面向对象程序设计OOP,较为详细的深入分析了Python面向对象的构造函数,组合类,工具类等相关概念、使用方法及操作注意事项,需要的朋友可以参考下
发布时间:2019-06-03