Skip to content
/ en2an Public

🦅 快速转化「英文数字」和「阿拉伯数字」

License

Notifications You must be signed in to change notification settings

kdwycz/en2an

Repository files navigation

en2an: English Numerals To Arabic Numerals

Pypi MIT License stars build API

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

🔗点我访问 DEMO

🎈 该项目正在收集需求中,欢迎在 Issue: 需求收集 中与我们讨论!

1 功能

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

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

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

  • 支持 阿拉伯数字 => 英文数字
  • 支持 阿拉伯数字 => 大写英文数字
  • 支持 阿拉伯数字 => 大写美元(美点表达)

1.3 句子转化(试验性功能)(开发中)

1.4 其他(开发中)

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

2 安装

⚠️ 注意:

  1. 本地安装仅支持 Python 的 3.6 以上版本;
  2. 其他语言用户可以考虑使用 HTTP API
  3. 请尽可能使用 en2an 的最新版本。

2.1 使用 pip 安装

pip install en2an -U

2.2 从代码库安装

git clone https://github.com/Ailln/en2an.git
cd en2an && python setup.py install

3 使用

# 在文件首部引入包
import en2an

# 查看版本
print(en2an.__version__)
# 0.0.6

3.1 英文数字 => 阿拉伯数字

最大支持到hundred trillion(百兆),即10**15

import en2an

# 在 strict 模式(默认)下,只有严格符合数字拼写的才可以进行转化
output = en2an.en2an("one hundred and twenty-three")
# 或者
output = en2an.en2an("one hundred and twenty-three", "strict")
# output:
# 123

# 在 normal 模式下,还可以将 one two three 进行转化
output = en2an.en2an("one two three", "normal")
# output:
# 123

# 在 smart 模式下,还可以将混合拼写的 one hundred 23 进行转化(暂不支持小数)
output = en2an.en2an("one hundred 23", "smart")
# output:
# 123

# 以上三种模式均支持负数
output = en2an.en2an("minus one hundred and twenty-three")
# output:
# -123

# strict 模式支持小数,normal 和 smart 模式暂不支持
output = en2an.en2an("one point two three")
# output:
# 1.23

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

最大支持到10**15,即hundred trillion(百兆)。

import en2an

# 在 low 模式(默认)下,数字转化为小写的英文数字
output = en2an.an2en("1234567890")
# 或者
output = en2an.an2en("1234567890", "low")
# output:
# one billion two hundred and thirty-four million five hundred and sixty-seven thousand eight hundred and ninety

# 在 up 模式下,数字转化为大写的英文数字
output = en2an.an2en("1234567890", "up")
# output:
# ONE BILLION TWO HUNDRED AND THIRTY-FOUR MILLION FIVE HUNDRED AND SIXTY-SEVEN THOUSAND EIGHT HUNDRED AND NINETY

# 在 usd 模式下,数字转化为大写美元(美点表达)
output = en2an.an2en("1234567890", "usd")
# output:
# SAY US DOLLARS ONE BILLION TWO HUNDRED AND THIRTY-FOUR MILLION FIVE HUNDRED AND SIXTY-SEVEN THOUSAND EIGHT HUNDRED AND NINETY ONLY

# 小数、负数暂不支持

3.3 句子转化(试验性功能)

开发中...

3.4 HTTP API

主要为其他语言用户提供方便,当然 Python 用户也可以使用。

Java

import java.net.URL;
import java.net.HttpURLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;


public class HttpGetExample {
    public static void main(String[] args) throws Exception {
        HttpGetExample http = new HttpGetExample();
  
        String url = "https://api.dovolopor.com/v1/en2an";
        String params = "?text=123&function=an2en&method=low";
        http.get(url + params);
    }

    private void get(String url) throws Exception {
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        con.setRequestMethod("GET");
        con.setRequestProperty("User-Agent", "Mozilla/5.0");

        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        System.out.println(response.toString());
    }
}
// { output: "one hundred and twenty-three", msg: "转化成功" }

Javascript

const axios = require("axios")

axios.get("https://api.dovolopor.com/v1/en2an", {
  params: {
    text: "123",
    function: "an2en",
    method: "low"
  }
}).then(
  function (res) {
    console.log(res.data);
  }
)
// { output: "one hundred and twenty-three", msg: "转化成功" }

Go

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
)

func main(){
    params := url.Values{}
    Url, err := url.Parse("https://api.dovolopor.com/v1/en2an")
    if err != nil {
        return
    }
    params.Set("text", "123")
    params.Set("function", "an2en")
    params.Set("method", "low")

    Url.RawQuery = params.Encode()
    urlPath := Url.String()
    resp,err := http.Get(urlPath)
    defer resp.Body.Close()
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
// { output: "one hundred and twenty-three", msg: "转化成功" }

Python

import requests

response = requests.get("https://api.dovolopor.com/v1/en2an",
  params={
    "text": "1234567890",
    "function": "an2en",
    "method": "low"
  }
)
print(response.json())
# { output: "one hundred and twenty-three", msg: "转化成功" }

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 模版

6 开发相关

6.1 开发进度

本项目是用看板管理开发进度,请点击 v0.1 查看开发进度和计划事项。

6.2 代码测试

本地测试使用 Anaconda 的虚拟环境,测试方法如下:

bash scripts/local_test.sh

线上测试使用 GitHub Actions

6.3 性能测试

  • 测试版本:v0.0.6

  • 测试设备:2.3 GHz 双核Intel Core i5 MacBook Pro

  • 测试代码:performance.py

  • 测试方法:

    pip install -r requirements_test.txt
    
    python -m en2an.performance
  • 测试结果:

    序号 功能 执行次数 执行时间(平均) 性能(次/秒)
    1 an2en 10000 0.17 59k
    2 en2an 10000 0.50 20k

测试时,我使用的是最大长度的测试数据!因此,大多数情况下该库的性能会更好~

7 许可证

8 交流

欢迎添加微信号:Ailln_,备注「en2an」,我邀请你进入交流群。

9 参考

About

🦅 快速转化「英文数字」和「阿拉伯数字」

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published