python简单将账本金额(阿拉伯数字)转为大写中文数字金额

缘由

实习的地方要求将账本金额转换为中文大写,我又不想一个个手打,网上能直接找到的也只支持整数转换,就根据自己的需要写了一小段,置此以作记录

解决的问题

  1. 考虑了多个0在中间、末尾、开头不同位置
  2. 考虑了小数点后两位的情况
  3. 自动添加单位

这样其实用来转换一下账本的金额怎么也够用了。。

def get_sdigit(num, p):return int(num / pow(10, p)) % 10def get_max_pos(number):return len(str(int(number))) + len(str(int(number))) % 4 + 1class CNumber:cdict = {}gdict = {}xdict = {}def __init__(self):self.cdict = {0: u'', 1: u'拾', 2: u'佰', 3: u'仟'}self.xdict = {0: '分', 1: '角', 2: u'元', 3: u'万', 4: u'亿', 5: u'兆'}  # 数字标识符self.gdict = {0: u'零', 1: u'壹', 2: u'贰', 3: u'叁', 4: u'肆', 5: u'伍', 6: u'陆', 7: u'柒', 8: u'捌', 9: u'玖'}def tsf(self, number):cdata = []cdata.append(get_sdigit(number, -2))cdata.append(get_sdigit(number, -1))mark = 0for i in range(0, get_max_pos(number)):if mark == 0:temp = []temp.append(get_sdigit(number, i))mark += 1elif mark == 1:temp.append(get_sdigit(number, i))mark += 1elif mark == 2:temp.append(get_sdigit(number, i))mark += 1elif mark == 3:temp.append(get_sdigit(number, i))mark = 0cdata.append(temp)return self.to_String(cdata)def to_String(self, nList):S = ''  # 初始化用的S,防止小数部分为空# 下面两个if是用来加上小数部分的if nList[0] != 0:S = self.gdict.get(nList[0]) + self.xdict.get(0)if nList[1] != 0:S = self.gdict.get(nList[1]) + self.xdict.get(1) + Sif nList[0] == 0 and nList[1] == 0:S = '整' + Sfor i in range(2, len(nList)):mark = 0for num in nList[i]:if num == 0:mark += 1if mark != 4 or i == 2:S = self.xdict.get(i) + S  # 加上单位(元万亿。。。)for j in range(0, 4):if i != len(nList) - 1:if nList[i][j] != 0:S = self.gdict.get(nList[i][j]) + self.cdict.get(j) + S# 逻辑判断,每四个单位哪些情况会出现零# 基本逻辑为,同阶内,小于自己的一定存在非0,而自己的上一位一定非0elif (j == 1 and nList[i][0] != 0 and nList[i][2] != 0) \or (j == 2 and (nList[i][1] != 0 or nList[i][0] != 0) and nList[i][3] != 0)\or (j == 3 and (nList[i][2] != 0 or nList[i][1] != 0 or nList[i][0] != 0)):S = self.gdict.get(nList[i][j]) + Selse:if nList[i][j] != 0:S = self.gdict.get(nList[i][j]) + self.cdict.get(j) + Selif j == 1 and nList[i][0] != 0 and nList[i][2] != 0:S = self.gdict.get(nList[i][j]) + Sreturn S

这里是简单测试用的

if __name__ == '__main__':test = CNumber()print(test.tsf(1100000000))

关于使用python简单将账本金额转化为大写中文数字相关推荐

  1. 银行app金额转化为大写汉字代码Java

    银行app金额转化为大写汉字代码Java 网上有好多相关转化的Java代码,这个我写的方式如下: public class ChangeMoney { /** * @param dubin * 写一个 ...

  2. python|简单实现英文单词大小写转化

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 欢迎加入团队圈子!与作者面对面!直接点击! 问题描述 日常生活 ...

  3. python 表示金额时,将中文数字的大写的壹贰叁肆伍转换为阿拉伯数字:rmbTrans.trans

    在处理表格或word文档时,有时候像金额这种数据,在比较正式的情况下会写成中文的形式,比如壹万叁仟陆佰伍拾元贰角这种,我们如何将它转换为阿拉伯数字表示的1365.2元这种形式呢? 此处介绍一个函数 r ...

  4. LeetCode简单题之字符串转化后的各位数字之和

    题目 给你一个由小写字母组成的字符串 s ,以及一个整数 k . 首先,用字母在字母表中的位置替换该字母,将 s 转化 为一个整数(也就是,'a' 用 1 替换,'b' 用 2 替换,- 'z' 用 ...

  5. iOS数字金额转化为大写汉字(阿拉巴数字转化为汉字)

    本博文想要解决的问题,是将一串阿拉伯数字(包含小数点)转化为对应的大写汉字. 实现思路如下: 1.将这串阿拉伯数字格式化,只取小数点后两位: 2.将字符串分割为整数部分的子串和小数部分的子串: 3.遍 ...

  6. 关于金额转化为大写的小程序

    package com.lanou.review.money; import java.util.Scanner; /**  * 输入整数价钱 输出大写金额  */ public class Mone ...

  7. iOS非金额两位小数转化为大写中文

    最近APP中出现该需求,所以自己开发了一下相关方法,具体代码如下,按需自取. -(NSString *)changetochinese:(NSString *)numstr {double numbe ...

  8. 用Python将输入1-99999的数转化为大写中文形式

    dic_num={"0":u"零","1":u"壹","2":u"贰",&quo ...

  9. php 把数字转化为大写中文(完善版)

    *** 将数值金额转换为中文大写金额* @param $amount float 金额(支持到分)* @param $type int 补整类型,0:到角补整;1:到元补整* @return mixe ...

最新文章

  1. 从零开始一起学习SLAM | 为啥需要李群与李代数?
  2. 数据结构与算法的八股文自述(持续更新)
  3. 莫比乌斯函数_莫比乌斯环:python-matplotlib可视化实现
  4. 个人作业1 四则运算题目生成程序
  5. MSSQL系统常用视图命令及其作用
  6. 在linux下解压jdk时出现的问题
  7. 【记录】Docker安装后出现 Cannot connect to the Docker daemon
  8. 详解ifconfig命令
  9. 6.6 AdaBoost实战
  10. Windows系统重装教程完整版(系统备份、系统还原与重装)
  11. 商品规格参数数据库设计
  12. LEAK: ByteBuf.release() was not called before it's garbage-collected. Enable advanced leak reporting
  13. MACD怎样判断趋势?巧用MACD指标研判市场的强弱!(实例)
  14. Nat Commun:中国中医科学院黄璐琦院士/首都医科大学高伟教授团队联合解析雷公藤甲素生物合成关键C-14位羟化机制...
  15. IDEA最全最常用的配置与性能优化(Java必备)
  16. 【PhotoShop基础B篇】准确控制曝光
  17. SEER见证人操作指南
  18. 数独游戏开发——计时器实现
  19. C++控制台RPG游戏(序)
  20. 5、用Python编程,假设一年期定期利率为3.25%,计算一下需要过多少年,一万元的一年定期存款连本带息能翻番?

热门文章

  1. 大中小型指挥/视频监控中心KVM坐席协作管理的不同解决方案
  2. 水淼和MDBplus组合使用技巧
  3. 超文本传输协议 -- HTTP/1.1(二)
  4. win7设置屏幕保护色
  5. 商场销售服务器,商场柜台销售的服务礼仪
  6. 3 2计算机专业学校有哪些,3十2学校有哪些好专业可以选择
  7. .log .clf文件转化为 .bag文件 github
  8. 硬盘哨兵linux版,硬盘哨兵(Hard Disk Sentinel Pro)
  9. mt5加密php,【MT5源码】人工交易助手【MT5桌面控件】
  10. php你们想不到的强大,找电影的好网站,再也不用担心下不到好电影了!