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操作MySQL简单实现方法
Jan 26 Python
python循环监控远程端口的方法
Mar 14 Python
用Python实现斐波那契(Fibonacci)函数
Mar 25 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
python实现换位加密算法的示例
Oct 14 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
解决Django生产环境无法加载静态文件问题的解决
Apr 23 Python
python爬虫 爬取58同城上所有城市的租房信息详解
Jul 30 Python
Win10 安装PyCharm2019.1.1(图文教程)
Sep 29 Python
Python操控mysql批量插入数据的实现方法
Oct 27 Python
Python爬取梨视频的示例
Jan 29 Python
Python实现机器学习算法的分类
Jun 03 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
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
python使用递归解决全排列数字示例
2014/02/11 Python
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
Python命令行解析模块详解
2018/02/01 Python
Python SVM(支持向量机)实现方法完整示例
2018/06/19 Python
python hashlib加密实现代码
2019/10/17 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
南京软件公司的.net程序员笔试题
2014/08/31 面试题
路政管理专业推荐信
2013/11/11 职场文书
英语生日邀请函
2014/01/23 职场文书
小学英语教学反思案例
2014/02/04 职场文书
群众路线教育实践活动批评与自我批评
2014/09/15 职场文书
人民调解协议书范本
2014/10/11 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
原生JS实现分页
2022/04/19 Javascript
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang