python人民币小写转大写辅助工具
本文实例为大家分享了python人民币大小写转换的具体代码,供大家参考,具体内容如下
大家应该都知道,银行打印账单有时候会跟上人民币的阿拉伯数字以及人民币汉字大写写法,转换的过程中有一定的逻辑难度,较为麻烦,所以笔者心血来潮,花了点时间简单实现了一下这一转换过程,以供初学者参考。
输入样例:
123.22
输出样例:
壹佰贰拾叁圆贰角贰分
参考代码:
#!/usr/bin/envpython
#encoding:utf-8
from__future__importprint_function
importsys
importre
importbase64
importtime
importos
importgetpass
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")]
defcalcRMB():
sum_arr=[]
in_str_dot=""
in_str_Big=""
flag=0
dot_count=0
in_str=raw_input("Pleaseinputnumber:")
foriinin_str:
ifi=='.':
dot_count+=1
eliford(i)<=ord('z')andord(i)>=ord('A'):
print("Error")
return
iflen(in_str)>12ordot_count>1:
print("Error")
return
in_str=unicode(in_str).decode("utf8")
out_str=""
ifin_str.find('.')!=-1:
flag=1
sum_arr=in_str.split('.')
in_str_Big=sum_arr[0]
ifflag==1:
in_str_dot=sum_arr[1]
foriinrange(len(in_str_Big)):
ifcmp(in_str_Big[i],'0')==0and(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]
whileout_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"))
ifout_str!=u"零元".decode("utf8"):
out_str=out_str.replace(u"零圆".decode("utf8"),u"圆".decode("utf8"))
iflen(in_str_dot)>2andflag==1:
print("False!!")
return
ifflag==1:
foriinrange(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)
defmain():
while1:
os.system("cls")
calcRMB()
print()
end_flag=raw_input("TryAgain?(y/n)")
ifend_flag=='y'orend_flag=='Y':
continue
elifend_flag=='n'orend_flag=='N':
break
else:
print("\nError!!")
break
if__name__=='__main__':
main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。