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的PEAK来适配协议的教程
Apr 14 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
python决策树之C4.5算法详解
Dec 20 Python
Python使用matplotlib简单绘图示例
Feb 01 Python
Python 12306抢火车票脚本
Feb 07 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
使用python 写一个静态服务(实战)
Jun 28 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
Python把图片转化为pdf代码实例
Jul 28 Python
django教程如何自学
Jul 31 Python
Jupyter Notebook 安装配置与使用详解
Jan 06 Python
Python os和os.path模块详情
Apr 02 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
PHP-redis中文文档介绍
2013/02/07 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
python中遍历文件的3个方法
2014/09/02 Python
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
python定时器(Timer)用法简单实例
2015/06/04 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
详解px单位html5响应式方案
2018/03/08 HTML / CSS
研究生自我鉴定范文
2013/10/30 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
融资租赁计划书
2014/04/29 职场文书
征兵宣传标语
2014/06/20 职场文书
运动会加油稿100字
2014/09/19 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL