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中IPYTHON入门实例
May 11 Python
python 网络爬虫初级实现代码
Feb 27 Python
windows下添加Python环境变量的方法汇总
May 14 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
Mar 20 Python
深入了解python中元类的相关知识
Aug 29 Python
python实现布隆过滤器及原理解析
Dec 08 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
Python读取二进制文件代码方法解析
Jun 22 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 Python
Python获取指定日期是"星期几"的6种方法
Mar 13 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 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教程 变量定义
2009/10/23 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
PHP 查找字符串常用函数介绍
2012/06/07 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
js中匿名函数的N种写法
2010/09/08 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
python选择排序算法的实现代码
2013/11/21 Python
Python兔子毒药问题实例分析
2015/03/05 Python
python基础教程之Filter使用方法
2017/01/17 Python
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
个人简历自我评价八例
2013/10/31 职场文书
生日派对邀请函
2014/01/13 职场文书
房地产营销策划方案
2014/02/08 职场文书
给校长的建议书
2014/03/12 职场文书
影子教师研修方案
2014/06/14 职场文书
招标授权委托书样本
2014/09/23 职场文书