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

本文实例为大家分享了python人民币大小写转换的具体代码,供大家参考,具体内容如下

大家应该都知道,银行打印账单有时候会跟上人民币的阿拉伯数字以及人民币汉字大写写法,转换的过程中有一定的逻辑难度,较为麻烦,所以笔者心血来潮,花了点时间简单实现了一下这一转换过程,以供初学者参考。

输入样例:

123.22

输出样例:

壹佰贰拾叁圆贰角贰分

参考代码:

#!/usr/bin/env python

# encoding: utf-8

from __future__ import print_function

import sys

import re

import base64

import time

import os

import getpass

reload(sys)

sys.setdefaultencoding("utf-8")

char_arr_01 = [u"零".decode("utf8"), u"壹".decode("utf8"), u"贰".decode("utf8"), u"叁".decode("utf8"), u"肆".decode(

"utf8"), u"伍".decode("utf8"), u"陆".decode("utf8"), u"柒".decode("utf8"), u"捌".decode("utf8"), u"玖".decode("utf8")];

char_arr_02 = [u"圆".decode("utf8"), u"拾".decode("utf8"), u"佰".decode("utf8"), u"仟".decode("utf8"), u"万".decode("utf8"), u"拾".decode("utf8"), u"佰".decode("utf8"), u"仟".decode(

"utf8"), u"亿".decode("utf8"), u"拾".decode("utf8"), u"佰".decode("utf8"), u"仟".decode("utf8"), u"万".decode("utf8"), u"拾".decode("utf8"), u"佰".decode("utf8")]

char_arr_03 = [u"分".decode("utf8"), u"角".decode("utf8")]

def calcRMB():

sum_arr = []

in_str_dot = ""

in_str_Big = ""

flag = 0

dot_count = 0

in_str = raw_input("Please input number : ")

for i in in_str:

if i == '.':

dot_count += 1

elif ord(i) <= ord('z') and ord(i) >= ord('A'):

print("Error")

return

if len(in_str) > 12 or dot_count > 1:

print("Error")

return

in_str = unicode(in_str).decode("utf8")

out_str = ""

if in_str.find('.') != -1:

flag = 1

sum_arr = in_str.split('.')

in_str_Big = sum_arr[0]

if flag==1:

in_str_dot = sum_arr[1]

for i in range(len(in_str_Big)):

if cmp(in_str_Big[i],'0') == 0 and (len(in_str_Big)-1-i)%4 != 0:

out_str = out_str + char_arr_01[ord(in_str_Big[i])-ord('0')]

else:

out_str = out_str + char_arr_01[ord(in_str_Big[i])-ord('0')]

out_str = out_str + char_arr_02[len(in_str_Big)-1-i]

while out_str.find(u"零零".decode("utf8")) != -1:

out_str = out_str.replace(u"零零".decode("utf8"), u"零".decode("utf8"))

out_str = out_str.replace(u"零亿".decode("utf8"),u"亿".decode("utf8"))

out_str = out_str.replace(u"零万".decode("utf8"),u"万".decode("utf8"))

if out_str != u"零元".decode("utf8"):

out_str = out_str.replace(u"零圆".decode("utf8"),u"圆".decode("utf8"))

if len(in_str_dot) > 2 and flag == 1:

print("False !!")

return

if flag == 1:

for i in range(len(in_str_dot)):

out_str = out_str + char_arr_01[ord(in_str_dot[i])-ord('0')]

out_str = out_str + char_arr_03[len(in_str_dot)-1-i]

print(out_str)

def main():

while 1:

os.system("cls")

calcRMB()

print()

end_flag = raw_input("Try Again ? (y/n)")

if end_flag == 'y' or end_flag == 'Y':

continue

elif end_flag == 'n' or end_flag == 'N':

break

else:

print("\nError!!")

break

if __name__ == '__main__':

main()

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

时间: 2018-06-19

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值