首页 > 编程语言 >python 将中文数字转换成阿拉伯数字

python 将中文数字转换成阿拉伯数字

时间:2023-06-22 17:11:06浏览次数:38  
标签:一千一百 中文数字 python 阿拉伯数字 ---- 六十七 num result text

日常遇到的中文数字主要有两种情况:

1.“二零零一”这种类型,只包含[0-9]对应的十个中文字,需要转换成数字:2001。这种情况的转换十分简单。

2. “三百二十一”这种类型,还有“十百千万亿……”等汉字,需要转换成数字:321,这种情况比较复杂。

考虑:

1. “四千三百二十一”,即万以内的数字,转换的思路是:4*1000+3*100+2*10+1

2. “四千三百二十一万”,转换的思路是:(4*1000+3*100+2*10+1)*10000 。

3. 通过递归,依次对字符串兆、亿、万前后切片,并作相应处理。

 1 # 中文数字包含的汉字与其对应的阿拉伯数字构成的字典。字典也可以进一步扩展为支持伍、陆、柒这些汉字
 2 dic = {"0":0,"零":0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9,"十":10,"百":100,"千":1000,"万":10000,"亿":100000000,"兆":1000000000000}
 3 def chi_num(text):
 4     # 如果字符串和"十百千万亿兆"没有并集,直接简单转换
 5     if len(set(text).intersection("十百千万亿兆")) == 0:
 6         result = simply_convert(text)
 7     # 以“兆”字为分隔点,将字符串切割成两个字符串分别处理
 8     elif "兆" in text:
 9         result = chi_num(text[text.index("兆")+1:]) + decwise_add(text[:text.index("兆")])*dic["兆"]
10     elif "亿" in text:
11         result = chi_num(text[text.index("亿")+1:]) + decwise_add(text[:text.index("亿")])*dic["亿"]
12     elif "万" in text:
13         result = chi_num(text[text.index("万")+1:]) + decwise_add(text[:text.index("万")])*dic["万"]
14     else:
15         result = decwise_add(text)
16     return result
17         
18 def simply_convert(text):
19     result=""
20     for i in text:
21         result += str(dic[i])
22     return int(result)
23 
24 # 一万以内的数字(比如“一千二百三十四“)通过"1*1000+2*100+3*10+4"这样的方式进行转换
25 def decwise_add(text):
26     #将字符串中的每个汉字转换成对应的阿拉伯数字
27     temp=[dic[i] for i in text]
28     result=0
29     for i in range(len(temp)):
30         if (temp[i]>9) and (i>0):
31             temp[i]*=temp[i-1]
32             temp[i-1] =0
33     for i in temp:
34         result+=i
35     return result
36 
37 import re
38 def formatNum(num):      
39     num=str(num)
40     pattern=r'(\d+)(\d{4})((,\d{4})*)'
41     while True:
42         num,count=re.subn(pattern,r'\1,\2\3',num)
43         if count==0:
44             break
45     return num
46 
47 if __name__ == '__main__':
48 
49     test_num= [u'九',
50                 u'十一',
51                 u'一百二十三',
52                 u'一千二百零三',
53                 u'一万一千一百零一',
54                 u'十万零三千六百零九',
55                 u'一百二十三万四千五百六十七',
56                 u'一千一百二十三万四千五百六十七',
57                 u'一亿一千一百二十三万四千五百六十七',
58                 u'一百零二亿五千零一万零一千零三十八',
59                 u'一千一百一十一亿一千一百二十三万四千五百六十七',
60                 u'一兆一千一百一十一亿一千一百二十三万四千五百六十七',
61                 ]
62 
63     for i in test_num:
64         print(i,"    -->  ",formatNum(chi_num(i)))

 

输出内容:

9 ---- 九
11 ---- 十一
123 ---- 一百二十三
1203 ---- 一千二百零三
1,1101 ---- 一万一千一百零一
10,3609 ---- 十万零三千六百零九
123,4567 ---- 一百二十三万四千五百六十七
1123,4567 ---- 一千一百二十三万四千五百六十七
1,1123,4567 ---- 一亿一千一百二十三万四千五百六十七
102,5001,1038 ---- 一百零二亿五千零一万零一千零三十八
1111,1123,4567 ---- 一千一百一十一亿一千一百二十三万四千五百六十七
1,1111,1123,4567 ---- 一兆一千一百一十一亿一千一百二十三万四千五百六十七

 

标签:一千一百,中文数字,python,阿拉伯数字,----,六十七,num,result,text
From: https://www.cnblogs.com/shengou/p/17498011.html

相关文章

  • python通过字典生成随机城市
    先把省和城市存入一个字典中用到random模块中的choice方法,在列表中随机选一个元素。 importrandom省=random.choice(list(city.keys()))#把字典的键表转换成列表,再随机选一个市=random.choice(city[省])#指定省后,在城市列表中随机选一个print(省,市) ......
  • Python | import json模块详解
    json是Python内置的一个用于处理JSON数据的模块。JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,常用于Web应用程序之间的数据传输。json模块提供了四个主要的方法:json.dumps()-将Python对象转换为JSON格式的字符串。json.loads()-将JSON格式的字符串转换为Py......
  • 数据分享|PYTHON用决策树分类预测糖尿病和可视化实例|附代码数据
    全文下载链接:http://tecdat.cn/?p=23848最近我们被客户要求撰写关于决策树的研究报告,包括一些图形和统计输出。在本文中,决策树是对例子进行分类的一种简单表示。它是一种有监督的机器学习技术,数据根据某个参数被连续分割。决策树分析可以帮助解决分类和回归问题决策树算法将数......
  • 蔬菜识别系统Python+TensorFlow+Django+卷积神经网络算法
    一、介绍蔬菜识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。二、效果图片三、演示视频+代码视频+完整......
  • 鸟类识别系统Python+Django+TensorFlow+卷积神经网络算法【完整代码】
    一、介绍鸟类识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。数据集选自加州理工学院200种鸟类数据集二、......
  • 蔬菜识别系统Python+TensorFlow+Django+卷积神经网络算法
    一、介绍蔬菜识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Django框架,开发网页端操作平台,实现用户上传一张图片识别其名称。二、效果图片三、演示视频+代码视频+完整代码:http......
  • 手写数字识别系统Python+CNN卷积神经网络算法【完整代码】
    一、介绍手写数字识别系统,使用Python语言,基于TensorFlow搭建CNN卷积神经网络算法对数据集进行训练,最后得到模型,并基于FLask搭建网页端界面,基于Pyqt5搭建桌面端可视化界面。二、效果展示三、演示视频+完整代码视频+代码:https://www.yuque.com/ziwu/yygu3z/tb1mzqi847daqkru......
  • 探索Python的反射与内省:代码的自我察觉
    Python中的反射与内省允许代码察觉和修改它自己。反射指的是程序在运行时可以访问、检测和修改它自己的结构或行为的一种能力。而内省则更侧重于查看对象的类型和属性,比如查看一个对象是否有某个属性或方法,以及查看对象的文档字符串等。本文将深入探讨Python的反射与内省能力。一......
  • Python time 模块简述
    time简介time是Python处理时间的标准库,其提供了三种时间表达形式时间戳结构化时间对象格式化时间字符串时间戳获取当前时间戳,计算内部时间,以浮点数形式返回importtimeprint(time.time())#1685243267.1221318结构化时间对象time.gmtime()将纪元以来以秒为为......
  • python写的一个脚本,在电脑运行。可以实现 手机端在线通过url观看电视
    python脚本,需要安装pipinstallflashpipinstallflash_restful fromflaskimportFlask,send_from_directoryfromflask_restfulimportApi,Resourceapp=Flask(__name__)api=Api(app)classTVSeriesResource(Resource):defget(self,episode):......