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计算书页码的统计数字问题实例
Sep 26 Python
介绍Python中的fabs()方法的使用
May 14 Python
对pandas中apply函数的用法详解
Apr 10 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
Jun 13 Python
python实现自动解数独小程序
Jan 21 Python
关于Python 的简单栅格图像边界提取方法
Jul 05 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
python对文档中元素删除,替换操作
Apr 02 Python
python使用pycharm安装pyqt5以及相关配置
Apr 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
PHP中,文件上传
2006/12/06 PHP
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
纯js简单日历实现代码
2013/10/05 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
基于jQuery仿淘宝产品图片放大镜特效
2020/10/19 Javascript
js实现文字截断功能
2016/09/14 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
微信小程序使用wxParse解析html的实现示例
2018/08/30 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
python网络爬虫学习笔记(1)
2018/04/09 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
2020/03/06 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
水果花束:Fruit Bouquets
2017/12/20 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
大学生个人自我鉴定
2013/12/03 职场文书
电视新闻稿
2015/07/17 职场文书
拙作再改《我的收音机情缘》
2022/04/05 无线电