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