网络编程
位置:首页>> 网络编程>> Python编程>> python人民币小写转大写辅助工具

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

作者:雨者  发布时间:2022-02-10 15:28:19 

标签: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()

来源:https://blog.csdn.net/peterz1997/article/details/78149082

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com