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

时间:2022-09-16 16:36:27

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

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

输入样例:

123.22

输出样例:

壹佰贰拾叁圆贰角贰分

参考代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/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