Python转换数字到中文大写格式

2018-02-28  本文已影响0人  终可见丶

今天有人在群里问到Python怎么把小写数字转换成中文的大写字符,觉得这个问题很有趣,于是想了一下,就开始写代码了。
以下是代码,感觉不足的地方就是如果是1001元,那么就会转换成 壹仟零佰零拾壹圆,多了个零。这个代码python2和python3都可以运行。

# -*- coding:utf-8 -*-
# date: 2018-02-28 11:48


def digital_to_chinese(digital):
    str_digital = str(digital)
    chinese = {'1': '壹', '2': '贰', '3': '叁', '4': '肆', '5': '伍', '6': '陆', '7': '柒', '8': '捌', '9': '玖', '0': '零'}
    chinese2 = ['拾', '佰', '仟', '万', '厘', '分', '角']
    jiao = ''
    bs = str_digital.split('.')
    yuan = bs[0]
    if len(bs) > 1:
        jiao = bs[1]
    r_yuan = [i for i in reversed(yuan)]
    count = 0
    for i in range(len(yuan)):
        if i == 0:
            r_yuan[i] += '圆'
            continue
        r_yuan[i] += chinese2[count]
        count += 1
        if count == 4:
            count = 0
            chinese2[3] = '亿'

    s_jiao = [i for i in jiao][:3]  # 去掉小于厘之后的

    j_count = -1
    for i in range(len(s_jiao)):
        s_jiao[i] += chinese2[j_count]
        j_count -= 1
    last = [i for i in reversed(r_yuan)] + s_jiao

    last_str = ''.join(last)
    print(str_digital)
    print(last_str)
    last_str = last_str.replace('0百', '0').replace('0十', '0').replace('000', '0').replace('00', '0').replace('0圆', '圆')
    for i in range(len(last_str)):
        digital = last_str[i]
        if digital in chinese:
            last_str = last_str.replace(digital, chinese[digital])
    print(last_str)
    return last_str


if __name__ == '__main__':
    digital_to_chinese(123456789.456)

这是输出

123456789.456
1亿2仟3佰4拾5万6仟7佰8拾9圆4角5分6厘
壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆肆角伍分陆厘
上一篇 下一篇

猜你喜欢

热点阅读