cn2an:中文数字转阿拉伯数字
📦 cn2an
是一个快速转换中文数字和阿拉伯数字的工具包!
🎈
v0.5.22 更新
:用 warning.warn 替代 print
1 功能
1.1 中文数字 => 阿拉伯数字
- 支持中文数字 => 阿拉伯数字;
- 支持大写中文数字 => 阿拉伯数字;
- 支持中文数字和阿拉伯数字混合 => 阿拉伯数字;
1.2 阿拉伯数字 => 中文数字
- 支持阿拉伯数字 => 中文数字;
- 支持阿拉伯数字 => 大写中文数字;
- 支持阿拉伯数字 => 大写人民币金额;
1.3 句子转换
-
支持中文数字 => 阿拉伯数字;
- 支持日期;
- 支持分数;
- 支持百分比;
- 支持摄氏度;
-
支持阿拉伯数字 => 中文数字;
- 支持日期;
- 支持分数;
- 支持百分比;
- 支持摄氏度;
1.4 其他
- 支持小数;
- 支持负数;
- 支持 HTTP API。
2 安装
⚠️ 注意:
- 本地安装仅支持 Python 3.6 及以上版本;
- 其他语言用户可以考虑使用 HTTP API;
- 请尽可能使用
cn2an
的最新版本。
2.1 使用 pip 安装
pip install cn2an -U
2.2 从代码库安装
git clone https://github.com/Ailln/cn2an.git
cd cn2an && python setup.py install
3 使用
# 在文件开头导入包
import cn2an
# 查看当前版本号
print(cn2an.__version__)
# 0.5.22
3.1 中文数字 => 阿拉伯数字
最大支持到
10**16
,即千万亿,最小支持到10**-16
。
import cn2an
# 在严格模式(默认)下,只有严格符合数字拼写的才能进行转换
output = cn2an.cn2an("一百二十三")
# 或者
output = cn2an.cn2an("一百二十三", "strict")
# output:
# 123
# 在 normal 模式下,可以将 一二三 进行转化
output = cn2an.cn2an("一二三", "normal")
# 输出:
# 123
# 在 smart 模式下,可以将混合拼写的 1百23 进行转化
output = cn2an.cn2an("1百23", "smart")
# 输出:
# 123
# 以上三种模式均支持负数
output = cn2an.cn2an("负一百二十三", "strict")
# 输出:
# -123
# 以上三种模式均支持小数
output = cn2an.cn2an("一点二三", "strict")
# 输出:
# 1.23
3.2 阿拉伯数字
=> 中文数字
最大支持到
10**16
,即千万亿
,最小支持到10**-16
。
import cn2an
# 在 low 模式(默认)下,数字转化为小写的中文数字
output = cn2an.an2cn("123")
# 或者
output = cn2an.an2cn("123", "low")
# 输出:
# 一百二十三
# 在 up 模式下,数字转化为大写的中文数字
output = cn2an.an2cn("123", "up")
# 输出:
# 壹佰贰拾叁
# 在 rmb 模式下,数字转化为人民币专用的描述
output = cn2an.an2cn("123", "rmb")
# 输出:
# 壹佰贰拾叁元整
# 以上三种模式均支持负数
output = cn2an.an2cn("-123", "low")
# 输出:
# 负一百二十三
# 以上三种模式均支持小数
output = cn2an.an2cn("1.23", "low")
# 输出:
# 一点二三
3.3 句子转化
⚠️:试验性功能,可能会造成不符合期望的转化。
import cn2an
# 在 cn2an 方法(默认)下,可以将句子中的中文数字转成阿拉伯数字
output = cn2an.transform("小王捡了一百块钱")
# 或者
output = cn2an.transform("小王捡了一百块钱", "cn2an")
# 输出:
# 小王捡了100块钱
# 在 an2cn 方法下,可以将句子中的中文数字转成阿拉伯数字
output = cn2an.transform("小王捡了100块钱", "an2cn")
# 输出:
# 小王捡了一百块钱
## 支持日期
output = cn2an.transform("小王的生日是二零零一年三月四日", "cn2an")
# 输出:
# 小王的生日是2001年3月4日
output = cn2an.transform("小王的生日是2001年3月4日", "an2cn")
# 输出:
# 小王的生日是二零零一年三月四日
## 支持分数
output = cn2an.transform("抛出去的硬币为正面的概率是二分之一", "cn2an")
# 输出:
# 抛出去的硬币为正面的概率是1/2
output = cn2an.transform("抛出去的硬币为正面的概率是1/2", "an2cn")
# 输出:
# 抛出去的硬币为正面的概率是二分之一
## 支持百分比
## 支持摄氏度
3.4 HTTP API
主要为其他语言(Java、Javascript、Go等)用户提供方便,当然 Python 用户也可以使用,点击查看详细用法。
4 版本支持
- 理论上支持
Windows
、MacOS
、Ubuntu
下的所有Python 3.6+
的版本。 - 实际上仅在
ubuntu-latest
、windows-latest
、macOS-latest
的Python 3.6, 3.7, 3.8
上做过完整测试。 - 欢迎提交其他版本使用情况到 Issues 中,期待你的反馈。
- 如果你有
Python 2
的使用需求,可 Fork 代码自行修改。当然也欢迎提 PR,贡献自己代码给其他人。
5 问题反馈
- 首先在 Issues 中搜索是否有人已经提出过类似的问题;
- 如果没有找到解答,请创建一个新的 issue:
- 首先,在「issue 标题」中填写你遇到的问题的简要描述;
- 然后,在「issue 详情」中填写你遇到的问题的具体情况;
- 最后,请务必注明你使用的操作系统(例如 Windows 10)和 Python 版本(例如 Python 3.6.3)。
- 你还可以参考 Issue Template。
6 开发相关
6.1 开发进度
本项目使用看板管理开发进度,请点击 v0.5 查看开发进度和计划事项。
6.2 代码测试
本地测试使用 Anaconda 的虚拟环境,测试方法如下:
# 执行测试
bash scripts/local_test.sh
线上测试使用 GitHub Actions。
6.3 性能测试
-
测试版本:
v0.5.1
-
测试设备:
2.3 GHz 双核Intel Core i5 MacBook Pro
-
测试代码:performance.py
-
测试方法:
pip install -r requirements_test.txt python -m cn2an.performance
-
测试结果:
序号 功能 执行次数 执行时间(万次平均) 性能(次/秒) 1 an2cn 10000 0.15 67k 2 cn2an 10000 0.35 29k
测试时,我使用了最大长度的测试数据!因此,在大多数情况下,该库的性能会更好~
7 许可证
8 交流
欢迎添加微信号:Ailln_
,备注「cn2an」,邀请你加入 Python 交流群。
9 致谢
- Thunder Bouble:提出许多有效的反馈,包括一些 bug 和新功能;
- Damon Yu:增加对全角数字和全角符号的支持;
- Beants:修复了口语格式的 bug;
- Ray:提出修改输出警告的方法,以及其他一些建议。