• Stars
    star
    651
  • Rank 68,699 (Top 2 %)
  • Language
    Python
  • License
    MIT License
  • Created over 6 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

📦 快速转化「中文数字」和「阿拉伯数字」~ (最新特性:分数,日期、温度等转化)

cn2an: Chinese Numerals To Arabic Numerals

Pypi MIT License stars build API download month

📦 cn2an 是一个快速转化 中文数字阿拉伯数字 的工具包!

🔗点击访问 DEMO

🎈 v0.5.22 update: replace print with warning.warn

🎈 en2an: 「英文数字」和「阿拉伯数字」互转正在收集需求中! 详情

🎈 Cn2An.jl: Julia 语言版本已经上线,正在丰富基础功能。详情

1 功能

1.1 中文数字 => 阿拉伯数字

  • 支持 中文数字 => 阿拉伯数字
  • 支持 大写中文数字 => 阿拉伯数字
  • 支持 中文数字和阿拉伯数字 => 阿拉伯数字

1.2 阿拉伯数字 => 中文数字

  • 支持 阿拉伯数字 => 中文数字
  • 支持 阿拉伯数字 => 大写中文数字
  • 支持 阿拉伯数字 => 大写人民币

1.3 句子转化

  • 支持 中文数字 => 阿拉伯数字

    • 支持 日期
    • 支持 分数
    • 支持 百分比
    • 支持 摄氏度
  • 支持 阿拉伯数字 => 中文数字

    • 支持 日期
    • 支持 分数
    • 支持 百分比
    • 支持 摄氏度

1.4 其他

  • 支持 小数
  • 支持 负数
  • 支持 HTTP API

2 安装

⚠️ 注意:

  1. 本地安装仅支持 Python 的 3.6 以上版本;
  2. 其他语言用户可以考虑使用 HTTP API
  3. 尽可能使用 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

# 在 strict 模式(默认)下,只有严格符合数字拼写的才可以进行转化
output = cn2an.cn2an("一百二十三")
# 或者
output = cn2an.cn2an("一百二十三", "strict")
# output:
# 123

# 在 normal 模式下,可以将 一二三 进行转化
output = cn2an.cn2an("一二三", "normal")
# output:
# 123

# 在 smart 模式下,可以将混合拼写的 1百23 进行转化
output = cn2an.cn2an("1百23", "smart")
# output:
# 123

# 以上三种模式均支持负数
output = cn2an.cn2an("负一百二十三", "strict")
# output:
# -123

# 以上三种模式均支持小数
output = cn2an.cn2an("一点二三", "strict")
# output:
# 1.23

3.2 阿拉伯数字 => 中文数字

最大支持到10**16,即千万亿,最小支持到 10**-16

import cn2an

# 在 low 模式(默认)下,数字转化为小写的中文数字
output = cn2an.an2cn("123")
# 或者
output = cn2an.an2cn("123", "low")
# output:
# 一百二十三

# 在 up 模式下,数字转化为大写的中文数字
output = cn2an.an2cn("123", "up")
# output:
# 壹佰贰拾叁

# 在 rmb 模式下,数字转化为人民币专用的描述
output = cn2an.an2cn("123", "rmb")
# output:
# 壹佰贰拾叁元整

# 以上三种模式均支持负数
output = cn2an.an2cn("-123", "low")
# output:
# 负一百二十三

# 以上三种模式均支持小数
output = cn2an.an2cn("1.23", "low")
# output:
# 一点二三

3.3 句子转化

⚠️:试验性功能,可能会造成不符合期望的转化。

import cn2an

# 在 cn2an 方法(默认)下,可以将句子中的中文数字转成阿拉伯数字
output = cn2an.transform("小王捡了一百块钱")
# 或者
output = cn2an.transform("小王捡了一百块钱", "cn2an")
# output:
# 小王捡了100块钱

# 在 an2cn 方法下,可以将句子中的中文数字转成阿拉伯数字
output = cn2an.transform("小王捡了100块钱", "an2cn")
# output:
# 小王捡了一百块钱


## 支持日期
output = cn2an.transform("小王的生日是二零零一年三月四日", "cn2an")
# output:
# 小王的生日是2001年3月4日

output = cn2an.transform("小王的生日是2001年3月4日", "an2cn")
# output:
# 小王的生日是二零零一年三月四日


## 支持分数
output = cn2an.transform("抛出去的硬币为正面的概率是二分之一", "cn2an")
# output:
# 抛出去的硬币为正面的概率是1/2

output = cn2an.transform("抛出去的硬币为正面的概率是1/2", "an2cn")
# output:
# 抛出去的硬币为正面的概率是二分之一

## 支持百分比
## 支持摄氏度

3.4 HTTP API

主要为其他语言(Java、Javascript、Go等)用户提供方便,当然 Python 用户也可以使用,点击查看详细用法

4 版本支持

  • 理论上支持 WindowsMacOSUbuntu 下的所有 Python 3.6+ 的版本。
  • 实际上仅在 ubuntu-latestwindows-latestmacOS-latestPython 3.6, 3.7, 3.8 上做过完整测试。
  • 欢迎提交其他版本使用情况到 Issues 中,期待你的反馈。
  • 如果你有 Python 2 的使用需求,可 Fork 代码自行修改。当然也欢迎提 PR,贡献自己代码给其他人。

5 问题反馈

  1. 先搜索 Issues 中有没有人已经问过类似的问题;
  2. 如果没有找到解答,请新开一个 issue:
    1. 首先,在「issue 标题」中填写你遇到的问题的简介;
    2. 然后,在「issue 详情」中填写你遇到的问题的详情;
    3. 最后,不要忘记注明你使用的操作系统(比如 Windows 10)和 Python 版本(比如 Python 3.6.3)。
  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: 提出修改输出 warn 的方法,以及其他一些建议。

10 参考

More Repositories

1

nlp-roadmap

🗺️ 一个自然语言处理的学习路线图
99
star
2

fuzi-nlu

🤖️ 聊天机器人——夫子的「自然语言理解」模块
Python
90
star
3

vue-flask-template

📦 一个快速搭建 Web 应用的模版!前端使用渐进式框架 Vue,后端使用微框架 Flask
Vue
75
star
4

awesome-hexo-theme

🌟排名前 10 的 Hexo 主题 | Top 10 Hexo theme
75
star
5

stock-prediction

💰 股票预测 / 量化交易比赛
Python
33
star
6

ACL2020-Paper-Code-Blog

🗂 ACL2020 的论文、代码和博客
21
star
7

rasa-guotie

🤖️🐱 一个基于 Rasa 的中文聊天机器人——「锅贴」
Python
20
star
8

awesome-cybergear

⚙️ 「CyberGear 微电机」相关资料汇总。
19
star
9

text-classification

🦑 中文文本分类(支持 API 部署)
Python
16
star
10

swiftui-login-page-with-leancloud

一份使用 LeanCloud 服务实现的、具有「登录注册功能」的 SwiftUI 代码。
Swift
12
star
11

python-package-template

📦 一个快速上传到 PyPI 的 Python Package 模版
Shell
10
star
12

sentiment-analysis

😄😐😠 情感分析(使用 emoji 可视化)
Python
8
star
13

torbjorn

🔨提供一些实用的 Python 装饰器
Python
8
star
14

math-roadmap

🗺️ 一个数学的学习路线图
8
star
15

en2an

🦅 快速转化「英文数字」和「阿拉伯数字」
Python
8
star
16

img2img

🔮 快速转化图片格式
Python
6
star
17

two

😏随机一句「中二」的台词!
Python
6
star
18

chat-ollm

🤖 A web UI for large language models.
TypeScript
4
star
19

proces

🐨 text preprocess.
Python
4
star
20

image-classification

🦞 图像分类任务(支持 API 部署)
Python
4
star
21

simple-jieba

✂️用 100 行实现简单版本的 jieba 分词
Python
4
star
22

EDITH

🕷️Even Dead, I’m The Hero.
4
star
23

fuzi-bot

🤖️ 聊天机器人——夫子的交互界面。
TypeScript
3
star
24

Cn2An.jl

Convert Chinese Numerals To Arabic Numerals With Julia Language.
Julia
3
star
25

vqa-roadmap

🍌Visual Question Answering Roadmap.
3
star
26

award

🏆一个用来表示「数据」和「链接」的图标生成器
JavaScript
2
star
27

prina

🦥打印 Python 变量时,带着变量名称
Python
2
star
28

laji-site-miniprogram

🥡一个开源的「垃圾分类」小程序。
JavaScript
2
star
29

chinese-word-segmentation

🔪中文分词
Python
2
star
30

chicken-egg-problem

["🐔", "🥚"] or ["🥚", "🐔"]
1
star
31

suo

🐢 中英文缩写转化
Python
1
star
32

machine-learning-classical-algorithm

🧠机器学习经典算法
Python
1
star
33

fuzi-bot-api

Python
1
star
34

utils

🧰如果一份代码需要写两遍,我就把它抽象出来放到这里。
Python
1
star
35

fuzi-search

Python
1
star
36

miniprogram-template

📦 一个快速搭建「微信小程序」的模版!
JavaScript
1
star