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 相关文章推荐
在Django的视图(View)外使用Session的方法
Jul 23 Python
Python队列的定义与使用方法示例
Jun 24 Python
python 判断网络连通的实现方法
Apr 22 Python
TensorFlow实现非线性支持向量机的实现方法
Apr 28 Python
运行django项目指定IP和端口的方法
May 14 Python
Python实现图片转字符画的代码实例
Feb 22 Python
Python StringIO及BytesIO包使用方法解析
Jun 15 Python
Keras预训练的ImageNet模型实现分类操作
Jul 07 Python
Kmeans均值聚类算法原理以及Python如何实现
Sep 26 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
Jan 21 Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 Python
python神经网络学习 使用Keras进行简单分类
May 04 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
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
PHP实现下载功能的代码
2012/09/29 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
19个超实用的PHP代码片段
2014/03/14 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
php生出随机字符串
2017/07/06 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
javascript中RegExp保留小数点后几位数的方法分享
2013/08/13 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
vue中touch和click共存的解决方式
2020/07/28 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
[02:16]卖萌的僵尸 DOTA2神话信使飞僵小宝来袭
2014/03/24 DOTA
[01:13]这,就是刀塔
2014/07/16 DOTA
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
python实现人机五子棋
2020/03/25 Python
django列表筛选功能的实现代码
2020/03/27 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
计算机专业职业生涯规划范文
2014/01/19 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
入党转正申请报告
2015/05/15 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
TypeScript 内置高级类型编程示例
2022/09/23 Javascript