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实现的各种排序算法代码
Mar 04 Python
python基础教程之对象和类的实际运用
Aug 29 Python
跟老齐学Python之有点简约的元组
Sep 24 Python
Django实现组合搜索的方法示例
Jan 23 Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 Python
python批量获取html内body内容的实例
Jan 02 Python
Python常用模块os.path之文件及路径操作方法
Dec 03 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
Python使用matplotlib绘制圆形代码实例
May 27 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 Python
python dict如何定义
Sep 02 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 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判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
二级域名转向类
2006/11/09 Javascript
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
2016/12/18 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
微信小程序中如何计算距离某个节日还有多少天
2019/07/15 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
重命名批处理python脚本
2013/04/05 Python
理解python多线程(python多线程简明教程)
2014/06/09 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
Python中函数参数调用方式分析
2018/08/09 Python
PyQt5响应回车事件的方法
2019/06/25 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
python自动生成证件号的方法示例
2021/01/14 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
商务英语专业自荐信
2013/10/14 职场文书
实践单位评语
2014/04/26 职场文书
政治表现评语
2014/05/04 职场文书
工作总结与自我评价
2014/09/18 职场文书
毕业生个人自荐书
2015/03/05 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
单方投资意向书
2015/05/11 职场文书
活动简报范文
2015/07/22 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang