简介
Python中文转阿拉伯数字
使用 cn2an
库,可进行中文和数字互转,支持繁体、小数、负数、人民币描述、日期、分数、摄氏度
安装
pip install cn2an
cn2an
需要 PyYAML>=5.3.1,若不满足可尝试另一个库——pycnnum
中文数字 → 阿拉伯数字
取值范围 1 0 − 16 ⩽ n ≤ 1 0 16 10^{-16}\leqslant n\leq 10^{16} 10−16⩽n≤1016
import cn2an
print(cn2an.cn2an("一百二十三")) # 默认为strict模式,需要严格符合数字拼写才可以转化
# 123
print(cn2an.cn2an("一二三", "normal")) # normal模式,可以转化一二三
# 123
print(cn2an.cn2an("1百23", "smart")) # smart模式,可以转化混合拼写的1百23
# 123
print(cn2an.cn2an("负一百二十三", "strict")) # 以上三种模式均支持负数
# -123
print(cn2an.cn2an("一点二三", "strict")) # 以上三种模式均支持小数
# 1.23
阿拉伯数字 → 中文数字
import cn2an
print(cn2an.an2cn("123")) # 默认为low模式,转化为小写中文数字
# 一百二十三
print(cn2an.an2cn("123", "up")) # up模式,转化为大写中文数字
# 壹佰贰拾叁
print(cn2an.an2cn("123", "rmb")) # rmb模式,转化为人民币描述
# 壹佰贰拾叁元整
print(cn2an.an2cn("-123", "low")) # 以上三种模式均支持负数
# 负一百二十三
print(cn2an.an2cn("1.23", "low")) # 以上三种模式均支持小数
# 一点二三
句子转化(实验性功能)
import cn2an
print(cn2an.transform("小王捡了一百块钱")) # 默认为cn2an模式,将句子中的中文转数字
# 小王捡了100块钱
print(cn2an.transform("小王捡了100块钱", "an2cn")) # 默认为an2cn模式,将句子中的数字转中文
# 小王捡了一百块钱
print(cn2an.transform("小王的生日是二零零一年三月四日", "cn2an")) # 支持日期
# 小王的生日是2001年3月4日
print(cn2an.transform("小王的生日是2001年3月4日", "an2cn"))
# 小王的生日是二零零一年三月四日
print(cn2an.transform("抛出去的硬币为正面的概率是二分之一", "cn2an")) # 支持分数
# 抛出去的硬币为正面的概率是1/2
print(cn2an.transform("抛出去的硬币为正面的概率是1/2", "an2cn"))
# 抛出去的硬币为正面的概率是二分之一
print(cn2an.transform("抛出去的硬币为正面的概率是百分之五十", "cn2an")) # 支持百分比
# 抛出去的硬币为正面的概率是50%
print(cn2an.transform("抛出去的硬币为正面的概率是50%", "an2cn"))
# 抛出去的硬币为正面的概率是百分之五十
print(cn2an.transform("今天二十七摄氏度", "cn2an")) # 支持摄氏度
# 今天27℃
print(cn2an.transform("今天27℃", "an2cn"))
# 今天二十七摄氏度
推荐阅读
pycnnum
安装
pip install pycnnum
初试
from pycnnum import cn2num, num2cn
print(cn2num('十'))
print(cn2num('一亿六点三'))
print(num2cn(33212222222, numbering_type='high', alt_two=True, big=True, traditional=True))
for i in range(25):
print(num2cn(i), end=' ')
print()
# 10
# 160000000.3
# 貳佰參拾貳億貳仟貳佰貳拾貳萬貳仟貳佰貳拾貳
# 一 二 三 四 五 六 七 八 九 一十 一十一 一十二 一十三 一十四 一十五 一十六 一十七 一十八 一十九 二十 二十一 二十二 二十三 二十四