Python将汉字数字转换成阿拉伯数字的方法,python阿拉伯,用Python语言来为不


Python语言来为不同数字之间做转换之前就有介绍过,今天分享的是用Python将汉字数字转换成阿拉伯数字的方法。汉字数字就是我们的大写数字:零、壹、贰、叁、肆、伍、陆、柒、捌、玖、拾,这种只有在会计人员才会常用的数字。

Python把用汉字表示的数字转换为阿拉伯数字前,需要先用到字典形式,做个对照好方便我们查找转换。

Python 数字转换

Python将汉字数字转换成阿拉伯数字的方法,源码如下(供参考):

CN_NUM = {u'〇' : 0,u'一' : 1,u'二' : 2,u'三' : 3,u'四' : 4,u'五' : 5,u'六' : 6,u'七' : 7,u'八' : 8,u'九' : 9,u'零' : 0,u'壹' : 1,u'贰' : 2,u'叁' : 3,u'肆' : 4,u'伍' : 5,u'陆' : 6,u'柒' : 7,u'捌' : 8,u'玖' : 9,u'貮' : 2,u'两' : 2,}CN_UNIT = {u'十' : 10,u'拾' : 10,u'百' : 100,u'佰' : 100,u'千' : 1000,u'仟' : 1000,u'万' : 10000,u'萬' : 10000,u'亿' : 100000000,u'億' : 100000000,u'兆' : 1000000000000,}def cn2dig(cn):    lcn = list(cn)    unit = 0 #当前的单位    ldig = []#临时数组    while lcn:        cndig = lcn.pop()        if CN_UNIT.has_key(cndig):            unit = CN_UNIT.get(cndig)            if unit==10000:                ldig.append('w')    #标示万位                unit = 1            elif unit==100000000:                ldig.append('y')    #标示亿位                unit = 1            elif unit==1000000000000:#标示兆位                ldig.append('z')                unit = 1            continue        else:            dig = CN_NUM.get(cndig)            if unit:                dig = dig*unit                unit = 0            ldig.append(dig)    if unit==10:    #处理10-19的数字        ldig.append(10)        ret = 0    tmp = 0    while ldig:        x = ldig.pop()        if x=='w':            tmp *= 10000            ret += tmp            tmp=0        elif x=='y':            tmp *= 100000000            ret += tmp            tmp=0        elif x=='z':            tmp *= 1000000000000            ret += tmp            tmp=0        else:            tmp += x    ret += tmp    return ret    #ldig.reverse()    #print ldig    #print CN_NUM[u'七']if __name__ == '__main__':    test_dig = [u'九',                u'十一',                u'一百二十三',                u'一千二百零三',                u'一万一千一百零一',                u'十万零三千六百零九',                u'一百二十三万四千五百六十七',                u'一千一百二十三万四千五百六十七',                u'一亿一千一百二十三万四千五百六十七',                u'一百零二亿五千零一万零一千零三十八',                u'一千一百一十一亿一千一百二十三万四千五百六十七',                u'一兆一千一百一十一亿一千一百二十三万四千五百六十七',                ]    for cn in test_dig:         print cn2dig(cn)

Python数字转换相关文章推荐:
1、用Python将罗马数字转换为阿拉伯数字的方法
2、Python实现金额大小写转换的方法

编橙之家文章,

评论关闭