python怎么将数字转化为汉字
短信预约 -IT技能 免费直播动态提醒
这篇文章主要介绍“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怎么将数字转化为汉字”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341