Python中文数字(包含小数)转阿拉伯数字参考函数

#Version : PYTHON3.10
CN_NUM = {
    '〇': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9, '零': 0,
    '壹': 1, '贰': 2, '叁': 3, '肆': 4, '伍': 5, '陆': 6, '柒': 7, '捌': 8, '玖': 9, '貮': 2, '两': 2,
}

CN_UNIT = {
    '十': 10,
    '拾': 10,
    '百': 100,
    '佰': 100,
    '千': 1000,
    '仟': 1000,
    '万': 10000,
    '萬': 10000,
    '亿': 100000000,
    '億': 100000000,
    '兆': 1000000000000,
}

def chinese_to_arabic(cn):
    unit = 0
    ldig = []
    for cndig in reversed(cn):
        if cndig in CN_UNIT:
            unit = CN_UNIT.get(cndig)
            if unit == 10000 or unit == 100000000:
                ldig.append(unit)
                unit = 1
        else:
            dig = CN_NUM.get(cndig)
            if unit:
                dig *= unit
                unit = 0
            ldig.append(dig)
    if unit == 10:
        ldig.append(10)
    val, tmp = 0, 0
    for x in reversed(ldig):
        if x == 10000 or x == 100000000:
            val += tmp * x
            tmp = 0
        else:
            tmp += x
    val += tmp
    return val

def chinese_to_float(cn):
    if cn.find(u'点') > 0:
        int_cn = cn.split(u'点')[0]
        float_cn = cn.split(u'点')[-1]
        float_value = 0
        for j in range(len(float_cn)):
            y = float_cn[j]
            dig = CN_NUM.get(y)
            if j == 0:
                n = 0.1
            else:
                n = n * 0.1
            float_value = float_value + dig * n
        val = chinese_to_arabic(int_cn) + float_value
    else:
        val = chinese_to_arabic(cn)
    return val

你可能感兴趣的:(python)