服务器之家

服务器之家 > 正文

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

时间:2021-03-07 00:13     来源/作者:雨者

本文实例为大家分享了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

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部