Python 中文数字转英文阿拉伯数字

Python 中文数字转英文阿拉伯数字(百万以内)

一、代码:

import re


def repl(data):
    cnNum = ['一', '二', '三', '四', '五', '六', '七', '八', '九']
    enNum = ['1', '2', '3', '4', '5', '6', '7', '8', '9']

    for i in range(len(cnNum)):
        data = data.replace(cnNum[i], enNum[i])

    if len(data) == 1:
        data = data.replace('十', '10')
    elif len(data) == 2:
        if data[0] == '十':
            data = data.replace('十', '1')
        else:
            data = data.replace('十', '0')
    else:
        data = data.replace('十', '')

    return data


def convert(cn):
    en = 0
    res = []

    ten_t = re.search(r'[一二三四五六七八九十]{1,3}万', cn)
    if ten_t:
        ten_t_cn = ten_t.group()
        ten_t = re.sub(r'万', '', ten_t_cn)
        ten_t = int(repl(ten_t)) * 10000
        cn = cn.replace(ten_t_cn, '')
        res.append(ten_t)

    thousand = re.search(r'[一二三四五六七八九]千', cn)
    if thousand:
        thousand_cn = thousand.group()
        thousand = int(repl(thousand_cn[0])) * 1000
        cn = cn.replace(thousand_cn, '')
        res.append(thousand)

    hundred = re.search(r'[一二三四五六七八九]百', cn)
    if hundred:
        hundred_cn = hundred.group()
        hundred = int(repl(hundred_cn[0])) * 100
        cn = cn.replace(hundred_cn, '')
        res.append(hundred)

    ten = re.search(r'[一二三四五六七八九十]+', cn)
    if ten:
        ten = int(repl(ten.group()))
        res.append(ten)

    for num in res:
        en += num

    print(en)
    return en


def main():

    string = '第九十九万八千六百三十二章 替换中文数字'

    cn_num = re.findall(r'[零一二三四五六七八九十百千万]+', string)

    for item in cn_num:
        item_no0 = item.replace('零', '')
        number = convert(item_no0)
        string_num = string.replace(item, ' %s ' % number)

    print('替换前:%s\n替换后:%s' % (string, string_num))


main()


二、执行结果:

替换前:第九十九万八千六百三十二章 替换中文数字
替换后:第 998632 章 替换中文数字

三、注:

百万或百万以上请根据原理自行添加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值