python中如何将货币数字转化成汉字大写金额

更新时间:2023-07-26 19:10:15 阅读: 评论:0

python中如何将货币数字转化成汉字⼤写⾦额
  近⽇,⼩爬的⼯作中,需要将货币数字⾦额(如:123234.56)转化成汉字⼤写的形式。⽹络上看了⼀圈他⼈博客上的⾃定义函数,稍微都存有瑕疵,不符合汉语习惯:
1、⽐如,“六分”不能被转化为“零⾓六分”,“.00"转为了”零⾓零分“灯,着实有些拗⼝;
2、有的⽀持的位数不够多,只定义了⼀万以下的数字转化⽅法,这样的函数有它的局限性。
  ⼩爬最后找到⼀个他⼈写的、效果⽐较理想的js函数,稍加修改,然后⽤python的语法重新实现了,可以很完美地实现上述⾦额转化为⼤写的要求,⽀持的数⼤⼩可以超过⼀亿,供参考!
def formatCurrency(currencyDigits):
'''本函数旨在将数字化的⾦额(不含千分符)转化为中⽂的⼤写⾦额'''
maximum_number=99999999999.99
cn_zero="零"
什么叫一带一路
cn_one="壹"
cn_two="贰"
cn_three="叁"
cn_four="肆"
cn_five="伍"我的性老师
cn_six="陆"
cn_ven="柒"
男生怎么护肤cn_eight="捌"
cn_nine="玖"
cn_ten="拾"
cn_hundred="佰"
cn_thousand="仟"
cn_ten_thousand="万"
cn_hundred_million="亿"
cn_symbol="⼈民币"
cn_dollar="元"
cn_ten_cent="⾓"
cn_cent="分"
cn_integer="整"
integral=None
decimal=None
outputCharacters=None
parts=None
digits, radices, bigRadices, decimals=None,None,None,None
zeroCount=None
i, p, d=None,None,None
quotient, modulus=None ,None
怎样补锌
currencyDigits=str(currencyDigits)
if currencyDigits=="":
return""
if float(currencyDigits)>maximum_number:
print("转换⾦额过⼤!")
return""
parts = currencyDigits.split(".")
if len(parts)>1:
integral = parts[0]
decimal = parts[1]
decimal=decimal[0:2]
if decimal=="0"or decimal=="00":
decimal=""
el:
integral=parts[0]
decimal=""
digits=[cn_zero,cn_one,cn_two,cn_three,cn_four,cn_five,cn_six,cn_ven,cn_eight,cn_nine]
radices=["",cn_ten,cn_hundred,cn_thousand]
bigRadices=["",cn_ten_thousand,cn_hundred_million]
decimals=[cn_ten_cent,cn_cent]
outputCharacters = ""
if int(integral)>0:
zeroCount = 0
for i in range(len(integral)):
p = len(integral) - i - 1
d = integral[i]
quotient = int(p / 4)
modulus = p % 4
if d=="0":
zeroCount+=1
el:
感冒可以喝奶茶吗if zeroCount>0:
outputCharacters += digits[0]
zeroCount=0
outputCharacters = outputCharacters+ digits[int(d)] + radices[modulus] if modulus==0 and zeroCount < 4:
outputCharacters =outputCharacters + bigRadices[quotient]
outputCharacters += cn_dollar
if decimal!="":
jiao = decimal[0]
if jiao=="":
jiao="0"
try:
fen = decimal[1]
except:
fen="0"
if fen=="":
fen="0"
if jiao=="0"and fen=="0":
pass
if jiao=="0"and fen !="0":
outputCharacters = outputCharacters + cn_zero + digits[int(fen)] + decimals[1] if jiao !="0"and fen=="0":
outputCharacters =outputCharacters + digits[int(jiao)] + decimals[0]
if jiao!="0"and fen !="0":
outputCharacters =outputCharacters + digits[int(jiao)] + decimals[0]
outputCharacters =outputCharacters + digits[int(fen)] + decimals[1]
if outputCharacters == "":
outputCharacters = cn_zero + cn_dollar
if decimal=="":
outputCharacters = outputCharacters+ cn_integer
outputCharacters = outputCharacters
return outputCharacters
  ⼩爬随便输⼊⼏个较⼤的货币数字给这个函数,输出的结果⾮常理想:
河南家常菜
1for currency in [23104214618.134,23423424.22,20012.35,23456.00,104213421.10,1000043.01]: 2    capital_currency=formatCurrency(currency)
3print(str(currency)+":\t"+capital_currency)
结果如下:
笋的做法大全家常炒菜23104214618.134:        贰佰叁拾壹亿零肆佰贰拾壹万肆仟陆佰壹拾捌元壹⾓叁分23423424.22:    贰仟叁佰肆拾贰万叁仟肆佰贰拾肆元贰⾓贰分
20012.35:      贰万零壹拾贰元叁⾓伍分
23456.0:        贰万叁仟肆佰伍拾陆元整
104213421.1:    壹亿零肆佰贰拾壹万叁仟肆佰贰拾壹元壹⾓
1000043.01:    壹佰万零肆拾叁元零壹分
 如果您也有类似的需求,赶紧来试试这个好⽤的函数吧! 
关于钱的名言快来扫码关注我的公众号获取更多爬⾍、数据分析的知识!

本文发布于:2023-07-26 19:10:15,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1118663.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:isdecimal函数
标签:函数   数字   货币
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图