python实现人民币大写转换

本文实例为大家分享了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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python人民币小写转大写辅助工具

    本文实例为大家分享了python人民币大小写转换的具体代码,供大家参考,具体内容如下 大家应该都知道,银行打印账单有时候会跟上人民币的阿拉伯数字以及人民币汉字大写写法,转换的过程中有一定的逻辑难度,较为麻烦,所以笔者心血来潮,花了点时间简单实现了一下这一转换过程,以供初学者参考. 输入样例: 123.22 输出样例: 壹佰贰拾叁圆贰角贰分 参考代码: #!/usr/bin/env python # encoding: utf-8 from __future__ import print_func

  • python2.x实现人民币转大写人民币

    本文实例为大家分享了python实现人民币转大写人民币的具体代码,供大家参考,具体内容如下 直接上代码: # -*- coding: utf-8 -*- def changenum( change_number ): format_num = ["零","壹","贰","叁","肆","伍","陆","柒","捌","

  • python将人民币转换大写的脚本代码

    复制代码 代码如下: def Num2MoneyFormat( change_number ):    """    .转换数字为大写货币格式( format_word.__len__() - 3 + 2位小数 )    change_number 支持 float, int, long, string    """    format_word = ["分", "角", "元",   

  • python实现人民币大写转换

    本文实例为大家分享了python实现人民币大写转换的具体代码,供大家参考,具体内容如下 #!/usr/bin/python # -*- coding:utf-8 -*- # ********* 转换方法介绍 ********* # 将需要转换的数字从右向左,每4位分成一个section,如:24530467103,将该数字拆分后,得到: # 245 3046 7103 (245亿3046万7103) # 对拆分后的数字先按照section进行数字到汉字的转换,然后添加数值单位,如:仟,佰,拾,处

  • C#实现人民币大写转换示例代码

    复制代码 代码如下: /// <summary>/// 人民币大写/// </summary>/// <param name="input">待转换输入</param>/// <param name="prefix">需要添加人民币前缀</param>/// <exception cref="ArgumentException" />/// <returns

  • 数字金额大写转换器制作代码分享(人民币大写转换)

    复制代码 代码如下: /// <summary>/// 人民币大写/// </summary>/// <param name="input">待转换输入</param>/// <param name="prefix">需要添加人民币前缀</param>/// <exception cref="ArgumentException" />/// <returns

  • 人民币数字转换成大写形式

    运用了正则表达式的功能,除了可以正确的转换成人民币的大写形式以外,还可以判断输入的形式是否正确有效. 将人民币数字转换成大写形式 function convertCurrency(currencyDigits) { // Constants: var MAXIMUM_NUMBER = 99999999999.99; // Predefine the radix characters and currency symbols for output: var CN_ZERO = "零";

  • PHP 实现人民币小写转换成大写的方法及大小写转换函数

    下面一段代码给大家分享php实现人民币大小写转换的方法,具体代码如下所示: <?php header("charset=utf-8;"); function numTrmb($num){ $d = array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", &q

  • php阿拉伯数字转中文人民币大写

    本文实例为大家分享了php阿拉伯数字转中文人民币大写的实现代码,供大家参考,具体代码如下 代码1:php阿拉伯数字转中文人民币大写,有详细的注释 /** *数字金额转换成中文大写金额的函数 *String Int $num 要转换的小写数字或小写字符串 *return 大写字母 *小数位为两位 **/ function num_to_rmb($num){ $c1 = "零壹贰叁肆伍陆柒捌玖"; $c2 = "分角元拾佰仟万拾佰仟亿"; //精确到分后面就不要了,所以

  • Python实现CAN报文转换工具教程

    一.CAN报文简介 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一. 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议. CAN总线以报文为单位进行数据传送.CAN报文按照帧格式可分为标准帧和扩展帧,标准帧是具

  • 教你怎么用Java完成人民币大写转化

    一.前言 人民币大写金额的正确写法: 整数部分:零.壹.贰.叁.肆.伍.陆.柒.捌.玖 小数部分:角.分.厘 数位部分:拾.佰.仟.万.亿.元 二.注意 阿拉伯数字小写金额数字中有 "0" 时,中文大写应按照汉语语言规律.金额数字构成和防止涂改的要求进行书写.举例如下: 1.阿拉伯数字中间有 "0" 时,中文大写要写"零"字,如¥1409.50应写成人民币壹仟肆佰零玖元伍角. 2.阿拉伯数字中间连续有几个 "0" 时.中文大写

  • Python实现简繁体转换

    简体繁体转换 如今,世界上存在两种中文,一种是中文简体,一种是中文繁体.如果要完全掌握中文语言的自然语言处理,那么简繁都不可避免.所以,掌握了简体与繁体的转换,往往能够事半功倍. 而HanLP也提供了简繁转换的类:CharTable,用它来执行字符正规化.比如简体转换繁体,全角转换半角,大写转换小写,都可以使用该类来实现. 使用CharTable进行简繁体转换 下面,我们来直接使用CharTable进行一段诗词的繁体到简单的转换.具体代码如下所示: if __name__ == "__main_

随机推荐