电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Python使用cn2an實現(xiàn)中文數(shù)字與阿拉伯?dāng)?shù)字的相互轉(zhuǎn)換

瀏覽:105日期:2022-06-26 16:11:39

工作中經(jīng)常遇到阿拉伯?dāng)?shù)字轉(zhuǎn)換稱為中文數(shù)字或者大寫金額,在網(wǎng)上搜了下,cn2an口碑較好,遂進行了一番學(xué)習(xí)。

安裝

pip install cn2an

依賴庫為setuptools、PyYAML

查看版本

In [1]: import cn2anIn [2]: cn2an.__version__Out[2]: ’0.5.8’查看模塊定義的標(biāo)識符

In [3]: dir(cn2an)Out[3]:[’An2Cn’, ’Cn2An’, ’Transform’, ’__all__’, ’__builtins__’, ’__cached__’, ’__doc__’, ’__file__’, ’__loader__’, ’__name__’, ’__package__’, ’__path__’, ’__spec__’, ’__version__’, ’an2cn’, ’cn2an’, ’transform’, ’utils’]模塊結(jié)構(gòu)

cn2an模塊結(jié)構(gòu)如下:

an2cn.pyan2cn_test.pycn2an.pycn2an_test.pyconfig.yamlperformance.pytransform.pytransform_test.pyutils.py__init__.py

查看模塊下的__init__.py文件可知,模塊主要對外暴露cn2an、an2cn和transform三個方法。

from .cn2an import Cn2Anfrom .an2cn import An2Cnfrom .transform import Transform__version__ = '0.5.8'cn2an = Cn2An().cn2anan2cn = An2Cn().an2cntransform = Transform().transform__all__ = [ '__version__', 'cn2an', 'an2cn', 'transform']使用說明1. 中文數(shù)字轉(zhuǎn)阿拉伯?dāng)?shù)字

In [4]: help(cn2an.cn2an)Help on method cn2an in module cn2an.cn2an:cn2an(inputs: str = None, mode: str = ’strict’) -> int method of cn2an.cn2an.Cn2An instance

查看幫助可知:cn2an方法有兩個參數(shù):inputs和mode,inputs類型為字符串,默認(rèn)值為空值,mode類型為字符串,默認(rèn)值為strict,查看源碼可知,mode僅支持strict, normal, smart等三個值。返回值為int類型。最大支持到10**16,即 千萬億,最小支持到 10**-16。

1.1 嚴(yán)格模式(strict)

默認(rèn)為嚴(yán)格模式,嚴(yán)格模式下只有嚴(yán)格符合數(shù)字拼寫的才可以進行轉(zhuǎn)化。

In [1]: import cn2anIn [2]: output = cn2an.cn2an('一百二十三')In [3]: outputOut[3]: 123In [4]: output = cn2an.cn2an('一二三')---------------------------------------------------------------------------ValueErrorTraceback (most recent call last)<ipython-input-4-4c55ae4aa4a9> in <module>----> 1 output = cn2an.cn2an('一二三')c:usersadministratorappdatalocalprogramspythonpython37libsite-packagescn2ancn2an.py in cn2an(self, inputs, mode) 30 31 # 檢查輸入數(shù)據(jù)是否有效---> 32 sign, integer_data, decimal_data, is_all_num = self.__check_input_data_is_valid(inputs, mode) 33 34 # smart 下的特殊情況c:usersadministratorappdatalocalprogramspythonpython37libsite-packagescn2ancn2an.py in __check_input_data_is_valid(self, check_data, mode) 155 else: 156 if mode == 'strict':--> 157 raise ValueError(f'不符合格式的數(shù)據(jù):{integer_data}') 158 elif mode == 'normal': 159 # 純數(shù)模式:一二三ValueError: 不符合格式的數(shù)據(jù):一二三

1.2 正常模式(normal)

在正常模式下,可以對 一二三 進行轉(zhuǎn)化

In [5]: output = cn2an.cn2an('一二三',’normal’)In [6]: outputOut[6]: 123

1.3 靈活模式(smart)

在 靈活模式下,可以對混合拼寫的 1百23 進行轉(zhuǎn)換,也可以對口語化數(shù)字進行轉(zhuǎn)換

In [7]: output = cn2an.cn2an('1百23', 'smart')In [8]: outputOut[8]: 123In [9]: output = cn2an.cn2an('一萬二', 'smart')In [10]: outputOut[10]: 120002. 阿拉伯?dāng)?shù)字轉(zhuǎn)中文數(shù)字

In [1]: import cn2anIn [2]: help(cn2an.an2cn)Help on method an2cn in module cn2an.an2cn:an2cn(inputs: Union[str, int, float] = None, mode: str = ’low’) -> str method of cn2an.an2cn.An2Cn instance 阿拉伯?dāng)?shù)字轉(zhuǎn)中文數(shù)字 :param inputs: 阿拉伯?dāng)?shù)字 :param mode: 小寫數(shù)字,大寫數(shù)字,人民幣大寫,直接轉(zhuǎn)化 :return: 中文數(shù)字

查看幫助可知:

an2cn方法有兩個參數(shù):inputs和mode,inputs類型可以是字符串、整數(shù)或者浮點數(shù),默認(rèn)值為空值,mode類型為字符串,默認(rèn)值為low,查看源碼可知,mode支持low, up, rmb, direct等四個值。返回值為str類型。

2.1 小寫中文模式(low)

在 low 模式(默認(rèn))下,數(shù)字轉(zhuǎn)化為小寫的中文數(shù)字。

In [3]: output = cn2an.an2cn('123')In [4]: outputOut[4]: ’一百二十三’In [5]: output = cn2an.an2cn('123', 'low')In [6]: outputOut[6]: ’一百二十三’

2.2 大寫中文模式(up)

在 up 模式下,數(shù)字轉(zhuǎn)化為大寫的中文數(shù)字。

In [7]: output = cn2an.an2cn('123', 'up')In [8]: outputOut[8]: ’壹佰貳拾叁’

2.3 人民幣模式(rmb)

在 rmb 模式下,數(shù)字轉(zhuǎn)化為人民幣專用的描述。

In [9]: output = cn2an.an2cn('123', 'rmb')In [10]: outputOut[10]: ’壹佰貳拾叁元整’

2.4 直接模式(direct)

在 direct 模式下,阿拉伯?dāng)?shù)字直接轉(zhuǎn)換為對應(yīng)的中文小寫數(shù)字,小數(shù)點轉(zhuǎn)換為漢字點。

In [11]: output = cn2an.an2cn('-1.23', 'direct')In [12]: outputOut[12]: ’負(fù)一點二三’3. 句子中的數(shù)字轉(zhuǎn)換

文檔中說明該功能為實驗性質(zhì),功能尚不穩(wěn)定。

In [1]: import cn2anIn [2]: help(cn2an.transform)Help on method transform in module cn2an.transform:transform(inputs: str, method: str = ’cn2an’) -> str method of cn2an.transform.Transform instance

transform方法具有兩個參數(shù):inputs和method,inputs的類型為字符串,method的類型為字符串,默認(rèn)值為cn2an,查看源碼可知method支持cn2an和an2cn這兩個值。返回值為字符串。

3.1 中文數(shù)字轉(zhuǎn)阿拉伯?dāng)?shù)字

在 cn2an 方法(默認(rèn))下,可以將句子中的中文數(shù)字轉(zhuǎn)換為阿拉伯?dāng)?shù)字查看源碼可知默認(rèn)情況下,中文數(shù)字轉(zhuǎn)換阿拉伯?dāng)?shù)字采用的smart模式。

In [3]: output = cn2an.transform('小王撿了一百塊錢')In [4]: outputOut[4]: ’小王撿了100塊錢’In [5]: output = cn2an.transform('整齊的步伐,一二一')In [6]: outputOut[6]: ’整齊的步伐,121’

transform方法會根據(jù)正則表達式,檢測日期、攝氏度、分?jǐn)?shù)、百分比等特殊情況進行轉(zhuǎn)換。

In [7]: output = cn2an.transform('小王的生日是二零零一年三月四日', 'cn2an')In [8]: outputOut[8]: ’小王的生日是2001年3月4日’In [9]: output = cn2an.transform('拋出去的硬幣為正面的概率是二分之一', 'cn2an')In [10]: outputOut[10]: ’拋出去的硬幣為正面的概率是1/2’In [11]: output = cn2an.transform('任務(wù)已經(jīng)完成百分之五十', 'cn2an')In [12]: outputOut[12]: ’任務(wù)已經(jīng)完成50%’In [13]: output = cn2an.transform('明天最低溫度一度', 'cn2an')In [14]: outputOut[14]: ’明天最低溫度1度’In [15]: output = cn2an.transform('明天最低溫度一攝氏度', 'cn2an')In [16]: outputOut[16]: ’明天最低溫度1℃’

3.2 阿拉伯?dāng)?shù)字轉(zhuǎn)中文數(shù)字

在an2cn 方法下,可以將句子中的阿拉伯?dāng)?shù)字轉(zhuǎn)換為中文數(shù)字。an2cn 模式下,依然會檢測日期、攝氏度、分?jǐn)?shù)、百分比等特殊情況進行轉(zhuǎn)換

In [2]: output = cn2an.transform('小王撿了100塊錢', 'an2cn')In [3]: outputOut[3]: ’小王撿了一百塊錢’In [4]: output = cn2an.transform('金額為12000元 ', 'an2cn')In [5]: outputOut[5]: ’金額為一萬二千元 ’In [6]: output = cn2an.transform('小王的生日是2001年3月4日', 'an2cn')In [7]: outputOut[7]: ’小王的生日是二零零一年三月四日’In [8]: output = cn2an.transform('拋出去的硬幣為正面的概率是1/2', 'an2cn')In [9]: outputOut[9]: ’拋出去的硬幣為正面的概率是二分之一’In [10]: output = cn2an.transform('任務(wù)完成了50%', 'an2cn')In [11]: outputOut[11]: ’任務(wù)完成了百分之五十’In [12]: output = cn2an.transform('今天最低氣溫1攝氏度', 'an2cn')In [13]: outputOut[13]: ’今天最低氣溫一攝氏度’

3.3 問題(大寫數(shù)字)

根據(jù)源碼可知transform方法優(yōu)先考慮日期、分?jǐn)?shù)、百分比、攝氏度等情況判斷,不符合這幾種情況的都判斷為普通數(shù)字,因此,大寫數(shù)字在transform方法中表現(xiàn)并不好!

In [14]: output = cn2an.transform('金額為壹萬貳仟元', 'cn2an')WARN: 不符合格式的數(shù)據(jù):萬WARN: 不符合格式的數(shù)據(jù):仟In [15]: outputOut[15]: ’金額為壹萬貳仟元 ’

測試

cn2an提供了web demo進行體驗。https://www.dovolopor.com/cn2an

API

cn2an提供了API,支持Java、Javascript、Go、Julia、Python等。https://github.com/Ailln/cn2an/wiki/API#http-api

到此這篇關(guān)于Python使用cn2an實現(xiàn)中文數(shù)字與阿拉伯?dāng)?shù)字的相互轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Python 中文數(shù)字與阿拉伯?dāng)?shù)字轉(zhuǎn)換內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 浙江皓格药业有限公司| 超声波破碎仪-均质乳化机(供应杭州,上海,北京,广州,深圳,成都等地)-上海沪析实业有限公司 | 福州时代广告制作装饰有限公司-福州广告公司广告牌制作,福州展厅文化墙广告设计, | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 工业PH计|工业ph酸度计|在线PH计价格-合肥卓尔仪器仪表有限公司 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 防火门-专业生产甲级不锈钢钢质防火门厂家资质齐全-广东恒磊安防设备有限公司 | 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 软文发布平台 - 云软媒网络软文直编发布营销推广平台 | 蒸压釜-陶粒板隔墙板蒸压釜-山东鑫泰鑫智能装备有限公司 | 猪I型/II型胶原-五克隆合剂-细胞冻存培养基-北京博蕾德科技发展有限公司 | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 儿童语言障碍训练-武汉优佳加感统文化发展有限公司 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 涂层测厚仪_漆膜仪_光学透过率仪_十大创新厂家-果欧电子科技公司 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 2-羟基泽兰内酯-乙酰蒲公英萜醇-甘草查尔酮A-上海纯优生物科技有限公司 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 物和码官网,物和码,免费一物一码数字化营销SaaS平台 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 便携式谷丙转氨酶检测仪|华图生物科技百科 | 【连江县榕彩涂料有限公司】官方网站 | 首页 - 军军小站|张军博客| 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 粉丝机械,粉丝烘干机,粉丝生产线-招远市远东粉丝机械有限公司 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 液压油缸-液压站生产厂家-洛阳泰诺液压科技有限公司 | 济南宣传册设计-画册设计_济南莫都品牌设计公司 | 微妙网,专业的动画师、特效师、CG模型设计师网站! - wmiao.com 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 |