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使用PIL模块实现给图片打水印的方法
May 22 Python
在Python的struct模块中进行数据格式转换的方法
Jun 17 Python
利用Python爬取可用的代理IP
Aug 18 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
Feb 13 Python
详谈python中冒号与逗号的区别
Apr 18 Python
python3 unicode列表转换为中文的实例
Oct 26 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
python实现电子产品商店
Feb 26 Python
Python应用领域和就业形势分析总结
May 14 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
使用pandas模块实现数据的标准化操作
May 14 Python
python tqdm用法及实例详解
Jun 16 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
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
php 静态变量的初始化
2009/11/15 PHP
php setcookie(name, value, expires, path, domain, secure) 参数详解
2013/06/28 PHP
PHP 字符串长度判断效率更高的方法
2014/03/02 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
jQuery事件用法详解
2016/10/06 Javascript
微信小程序 wxapp导航 navigator详解
2016/10/31 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
python tkinter组件摆放方式详解
2019/09/16 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
办公室经理岗位职责
2014/01/01 职场文书
承诺书范文
2014/06/03 职场文书
学习党代会心得体会
2014/09/05 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
HTML基础详解(上)
2021/10/16 HTML / CSS
Mysql 文件配置解析介绍
2022/05/06 MySQL