python中文数字转阿拉伯数字

我用了递归,所以代码比别人的精简,别人的我用过一些,发现有bug,然后就自己写了一个,目前还没发现有问题,欢迎大家一起来测测哈! 基本思路其实很简单,就是递归处理好每个大进位(从高到低) 的左边部分跟右边部分就OK了 比如 ( (七)十(一) )万( (零八)百() )

common_used_numerals={u'零':0,u'一':1,u'二':2,u'三':3,u'四':4,u'五':5,u'六':6,u'七':7,u'八':8,u'九':9,u'十':10,u'百':100,u'千':1000,u'万':10000,u'亿':100000000}

def cn2digits(uchars_cn):
    s=uchars_cn
    if not s :
        return 0
    for i in [u'亿',u'万',u'千',u'百',u'十']:
        if i in s:
            ps=s.split(i)
            lp=cn2digits(ps[0])
            if lp==0:
                lp=1
            rp=cn2digits(ps[1])
            #print i,s,lp,rp
            return lp*common_used_numerals.get(i, 0)+rp
    return common_used_numerals.get(s[-1], 0)

测试

cn2digits(u"九千七百五十八亿六百零一万零四百二十三")
975806010423

Comments