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实现的文本简单可逆加密算法示例
May 18 Python
运动检测ViBe算法python实现代码
Jan 09 Python
python简单商城购物车实例代码
Mar 15 Python
Python生成短uuid的方法实例详解
May 29 Python
Flask入门之上传文件到服务器的方法示例
Jul 18 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
python版百度语音识别功能
Jul 09 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
Jan 23 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
Feb 29 Python
基于Python下载网络图片方法汇总代码实例
Jun 24 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 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使用base64加密解密图片示例分享
2014/01/20 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
常用一些Javascript判断函数
2012/08/14 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
2015/10/14 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
详解 javascript对象创建模式
2020/10/30 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
Vue实现简单计算器
2021/01/20 Vue.js
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
haskell实现多线程服务器实例代码
2013/11/26 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Python装饰器用法示例小结
2018/02/11 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
Python多线程原理与用法详解
2018/08/20 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
节水倡议书范文
2014/04/15 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
python调用ffmpeg命令行工具便捷操作视频示例实现过程
2021/11/01 Python