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编程实现语音控制电脑
Apr 01 Python
跟老齐学Python之从格式化表达式到方法
Sep 28 Python
Python中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
Python系统监控模块psutil功能与经典用法分析
May 24 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
Python基于scipy实现信号滤波功能
May 08 Python
Python异常处理例题整理
Jul 07 Python
python基于event实现线程间通信控制
Jan 13 Python
Django使用list对单个或者多个字段求values值实例
Mar 31 Python
pandas 像SQL一样使用WHERE IN查询条件说明
Jun 05 Python
Python制作表白爱心合集
Jan 22 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
windows下开发并编译PHP扩展的方法
2011/03/18 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
PDO::errorCode讲解
2019/01/28 PHP
JavaScript 继承详解(一)
2009/07/13 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
Python ljust rjust center输出
2008/09/06 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
python学生管理系统代码实现
2020/04/05 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
《匆匆》教学反思
2014/02/22 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
纪念九一八事变演讲稿:忘记意味着背叛
2014/09/14 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
英文产品推荐信
2015/03/27 职场文书
四风之害观后感
2015/06/09 职场文书
首次购房证明
2015/06/19 职场文书
党员发展大会主持词
2015/07/03 职场文书
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis