当前位置: 首页 » 产品 » 新闻资讯 » 正文

Python如何实现中文数字转换为阿拉伯数字的方法

放大字体  缩小字体 发布日期: 2024-09-28 07:28   来源:http://www.baidu.com/  作者:无忧资讯  浏览次数:27
核心提示:今天写了三千二百行代码。今天写了3200行代码。两行意思相同,只是表达方式不太能够,统一掉。二、原理数字的特征是 数字 + 单位

今天写了三千二百行代码。 今天写了3200行代码。

两行意思相同,只是表达方式不太能够,统一掉。

二、原理

数字的特征是   数字 + 单位,例如三百,四十二,九千零二
可以从后往前遍历,遇到的是0到9的数字,就乘以前一位的单位,遇到新的单位(十百千万)就替换成数字供下一个数字用。

三、举例

五百四十三 1. 三-->3 3 <10 : total=3 2. 十-->10, 10 ≥10,且不为0 : r=10 3. 四-->4, 4<10 : total=3 + 4*10=43 4. 百-->100, 10 0≥10,且不为0 : r=100 5. 五-->5, 5<10 : total=43 + 5*100=543

四、参考代码

#-*- coding: cp936 -*- import re import string common_used_numerals_tmp={'零':0, '一':1, '二':2, '两':2, '三':3, '四':4, '五':5, '六':6, '七':7, '八':8, '九':9, '十':10, '百':100, '千':1000, '万':10000, '亿':100000000} common_used_numerals={} for key in common_used_numerals_tmp: common_used_numerals[key.decode('cp936')]=common_used_numerals_tmp[key] def chinese2digits(uchars_chinese): total=0 r=1 #表示单位:个十百千... for i in range(len(uchars_chinese) - 1, -1, -1): val=common_used_numerals.get(uchars_chinese[i]) if val >=10 and i==0: #应对 十三 十四 十*之类 if val > r: r=val total=total + val else: r=r * val #total=total + r * x elif val >=10: if val > r: r=val else: r=r * val else: total=total + r * val return total print chinese2digits('两百三十二'.decode('cp936')) print "-------------------------" print chinese2digits('十二'.decode('cp936')) print "-------------------------" print chinese2digits('一亿零八万零三百二十三'.decode('cp936'))

结果:

Python如何实现中文数字转换为阿拉伯数字的方法 三联

 
 
[ 产品搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 违规举报 ]  [ 关闭窗口 ]

 

 
推荐图文
推荐产品
点击排行
    行业协会  备案信息  可信网站