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 18 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
Dec 11 Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
python之pexpect实现自动交互的例子
Jul 25 Python
Python文件路径名的操作方法
Oct 30 Python
python写一个随机点名软件的实例
Nov 28 Python
tensorflow 实现从checkpoint中获取graph信息
Feb 10 Python
Python爬虫实现vip电影下载的示例代码
Apr 20 Python
python中使用asyncio实现异步IO实例分析
Feb 26 Python
教你如何用Python实现人脸识别(含源代码)
Jun 23 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连接mysql是否成功的代码分享
2014/01/24 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
JavaScript中的Location地址对象
2008/01/16 Javascript
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
2017/05/25 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
利用layer实现表单完美验证的方法
2019/09/26 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
Python底层封装实现方法详解
2020/01/22 Python
python实现KNN近邻算法
2020/12/30 Python
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
委托书样本
2014/04/02 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server