人民币金额大写转小写

将大写的金额转换成小写
对:“壹佰零壹亿叁仟零叁拾万零陆佰零陆元玖角玖分”
按”亿”,”万”,”元”进行切分
得到 [‘壹佰零壹’, ‘叁仟零叁拾’, ‘零陆佰零陆’, ‘玖角玖分’]
对list中每一个串进行转换然后乘以它的进制
最后累加

import re
money_dict={ "壹":1, "贰":2,"叁":3, "肆":4,
    "伍":5,"陆":6,"柒":7,"捌":8,"玖":9,
    "分":0.01,"角":0.1,"元":1,"拾":10,
    "佰":100,"仟":1000,"万":10000,"亿":100000000,
}
format_num = ["壹","贰","叁","肆","伍","陆","柒","捌","玖"]
format_hex = ["分","角","元","拾","佰","仟"]
format_d=["亿","万","元"]
def parse(str):
    memory = 0
    total = 0
    if len(str)==1:
        total=money_dict.get(str)
    else:
        for index, s in enumerate(str):
            num = money_dict.get(s)
            if s in format_num:
                memory = num
                if index ==len(str)-1:
                    total = total + memory
            elif s in format_hex:
                memory = memory * num
                total = total + memory
    return total

# def p_str(str):
#     x = 0
#     while str.find("零", x) != -1:
#         b = str.find("零", x)
#         x = b + 2
#         str = str[:b] + str[b + 1] + "零" + str[b + 2:]
#     return str

def p_data(str):
    list_d = re.split("[亿万元]", str)
    resu_num = 0
    for d in format_d:
        if d in str:
            list_d, resu_num = p_compute(list_d, resu_num, d)
    if list_d[0] == "整":
        return resu_num
    else:
        num = parse(list_d[0])
        resu_num = resu_num + num
        return resu_num

def p_compute(list_d,resu_num,hex):
    num = parse(list_d[0])
    resu_num = resu_num + num * money_dict.get(hex)
    list_d = list_d[1:]
    return list_d,resu_num

if __name__ == '__main__':
    str="叁拾万零玖拾元玖分"
    #str=p_str(str)
    print(str)
    print(p_data(str))
    #parse(str)

求一个简单易用的demo。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值