python人民币小写转大写辅助工具
2018-09-22 15:32
本文实例为大家分享了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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。