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创建文件和追加文件内容实例
Oct 21 Python
在Django的URLconf中进行函数导入的方法
Jul 18 Python
Python正则抓取新闻标题和链接的方法示例
Apr 24 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 Python
python for循环remove同一个list过程解析
Aug 14 Python
Python3 A*寻路算法实现方式
Dec 24 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
python定义类的简单用法
Jul 24 Python
python数字图像处理数据类型及颜色空间转换
Jun 28 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 iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
JQuery+JS实现仿百度搜索结果中关键字变色效果
2011/08/02 Javascript
js精度溢出解决方案
2012/12/02 Javascript
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
详解使用Python处理文件目录的相关方法
2015/10/16 Python
Python爬取附近餐馆信息代码示例
2017/12/09 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
市委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
财务人员入职担保书
2015/09/22 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android