python实现人民币大写转换


Posted in Python onJune 20, 2018

本文实例为大家分享了python实现人民币大写转换的具体代码,供大家参考,具体内容如下

#!/usr/bin/python
# -*- coding:utf-8 -*-

# ********* 转换方法介绍 *********
# 将需要转换的数字从右向左,每4位分成一个section,如:24530467103,将该数字拆分后,得到:
# 245 3046 7103 (245亿3046万7103)
# 对拆分后的数字先按照section进行数字到汉字的转换,然后添加数值单位,如:仟,佰,拾,处理结束后可以得到转换后的序列。
# 对section处理结束后,再对每个section进行单位的追加。如:兆、亿、万。
# 这里需要注意一些特殊情况,如:section中连续出现0,最后一个数字为0等。

DEBUG = True

upper = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"]
decimal_unit = ["角", "分", "厘", "毫"]
section_unit = ["万", "亿", "兆"]
count_unit = ["拾", "佰", "仟"]

def dbg_print(s):
  if DEBUG:
    print(s)

def split_num(num):
  num_list = []
  if (len(num) <= 4):
    num_list.append(num)
    return num_list
  while (len(num)):
    if (len(num) <= 4):
      num_list.append(num)
      num_list.reverse()
      return num_list
    sec = num[-4:]
    num_list.append(sec)
    num = num[:-4]

# 处理小数部分,只支持4位,多于4位,四舍五入。
def convert_dec(num):
  result = ""
  count = 0
  dbg_print(num)
  for i in num:
    n = int(i)
    if (0 != n):
      result += upper[n]
      result += decimal_unit[count]
    count += 1
  dbg_print(result)
  return result

# 处理整数部分
def convert_int(num):
  section_list = split_num(num)
  dbg_print(num)
  dbg_print(section_list)
  result = ""
  sec_index = len(section_list) - 2
  for item in section_list:
    index = len(item) - 2
    # 统计连续出现的数字0的个数。
    flag = 0
    # 计算遍历过的item中的字符数。 
    count = 0
    # 对每个section进行处理,得到数字对应的汉字。
    for i in item:
      n = int(i)
      if (0 == n):
        flag += 1
      else:
        flag = 0
      # 用来区分section的最后一位为0的情况
      if (count != len(item)-1):
        # 该位置的数字为0,并且它的下一个数字非0。
        if ((flag >= 1) and ('0' != item[count+1])):
          result += upper[n]
        else (0 != n):
          result += upper[n]
      else:
        # section的最后一个数字非0的情况。
        if (0 != n):
          result += upper[n]
      # 最后一个数字以及数字为0时,都不需要添加单位。
      if ((index >= 0) and (0 != n)):
        result += count_unit[index]
      index += 1
      count += 1
    从第1个section开始,如果section中的数字不全为0,其后就需要添加section对应的单位。
    if (sec_index >= 0 and flag != count):
      result += section_unit[sec_index]
    dbg_print(result)
    sec_index -= 1
  result = result.replace("壹拾", "拾")
  result += "元"
  return result

# 转换函数
def convert(num):
  result = ""
  num = round(float(num), 4)
  integer,decimal = str(num).split('.')
  result_int = convert_int(integer)
  result_dec = convert_dec(decimal)

  if (len(result_dec) == 0):
    result = result_int += "整"
  else:
    result = result_int + result_dec
  return result

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python用模块pytz来转换时区
Aug 19 Python
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
Python的CGIHTTPServer交互实现详解
Feb 08 Python
Python 元类实例解析
Apr 04 Python
使用python存储网页上的图片实例
May 22 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 20 Python
python脚本第一行如何写
Aug 30 Python
Python爬取网页信息的示例
Sep 24 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 Python
Pytorch中的数据集划分&正则化方法
May 27 Python
python人民币小写转大写辅助工具
Jun 20 #Python
python简易远程控制单线程版
Jun 20 #Python
python通过Windows下远程控制Linux系统
Jun 20 #Python
Python实现求解一元二次方程的方法示例
Jun 20 #Python
python实现NB-IoT模块远程控制
Jun 20 #Python
Python中pandas模块DataFrame创建方法示例
Jun 20 #Python
python自动发送邮件脚本
Jun 20 #Python
You might like
如何对PHP程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
PHP数据库调用类调用实例(详细注释)
2012/07/12 PHP
JavaScript 计算当天是本年本月的第几周
2009/03/22 Javascript
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
js实现二级导航功能
2017/03/03 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
vue.js实现回到顶部动画效果
2019/07/31 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
python类的继承实例详解
2017/03/30 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python三级菜单的实例
2017/09/13 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
python+pygame实现坦克大战
2019/09/10 Python
python中列表的含义及用法
2020/05/26 Python
Virtualenv 搭建 Py项目运行环境的教程详解
2020/06/22 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
小学生演讲稿
2014/01/12 职场文书
保护环境演讲稿
2014/05/10 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android