数字金额转大写金额使用场景挺多,最近写一个小工具需要用,想着网上找找现成的python代码,发现大多数需要订阅才能看。想偷懒让AI写一个,最后试了几个AI发现都不行,不管是国内的还是国外的,果然还是不能偷懒。突然想起来之前写了一个易语言工具好像有这个大写转换,不知道在哪个论坛找的一段易语言金额转大写的代码,反正不是我写的,果断改成python代码试了试,测试可行,至少代码行数比AI智障给的代码行数少,十几行搞定,目前也没发现有bug。放这里记录一下,省的以后要用的时候再找。
def number_to_chinese(price):
s1 = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
s2 = ['分', '角', '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '万']
replacements = [('零仟', '零'), ('零佰', '零'), ('零拾', '零'), ('零角', '零'), ('零零', '零'), ('零零', '零'), ('零零', '零'), ('零亿', '亿'), ('零万', '万'), ('零分', '整'), ('零元', '元'), ('角整', '角')]
s = f"{float(price) * 100:.0f}"
le = len(s)
dx = ''
for i in range(le):
dx += s1[int(s[i])] + s2[le - 1 - i]
for j,k in replacements:
dx = dx.replace(j, k)
if dx == '整':
dx = '零元整'
else:
dx = dx.replace('亿万', '亿零')
dx = dx.replace('零元', '元')
return dx