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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值