number-parser is a simple library that allows you to convert numbers written in the natural language to it’s equivalent numeric forms. It currently supports cardinal numbers in the following languages - English, Hindi, Spanish, Ukrainian and Russian and ordinal numbers in English.
Installation
pip install number-parser
number-parser requires Python 3.7+.
Usage
The library provides the following common usages.
Converting numbers in-place
Identifying the numbers in a text string, converting them to corresponding numeric values while ignoring non-numeric words. This also supports ordinal number conversion (for English only).
>>> from number_parser import parse
>>> parse("I have two hats and thirty seven coats")
'I have 2 hats and 37 coats'
>>> parse("One, Two, Three go")
'1, 2, 3 go'
>>> parse("First day of year two thousand")
'1 day of year 2000'
Parsing a number
Converting a single number written in words to it’s corresponding integer.
>>> from number_parser import parse_number
>>> parse_number("two thousand and twenty")
2020
>>> parse_number("not_a_number")
Parsing an ordinal
Converting a single ordinal number written in words to its corresponding integer. (Support for English only)
>>> from number_parser import parse_ordinal
>>> parse_ordinal("twenty third")
23
>>> parse_ordinal("seventy fifth")
75
Parsing a fraction
Converting a fractional number written in words to its corresponding integral fraction. (Support for English only)
>>> from number_parser import parse_fraction
>>> parse_fraction("forty two divided by five hundred and six")
'42/506'
>>> parse_fraction("one over two")
'1/2'
>>> parse_fraction("forty two / one million")
'42/1000000'
Language Support
The default language is English, you can pass the language parameter with corresponding locale for other languages. It currently supports cardinal numbers in the following languages - English, Hindi, Spanish, Ukrainian and Russian and ordinal numbers in English.
>>> from number_parser import parse, parse_number
>>> parse("Hay tres gallinas y veintitrés patos", language='es')
'Hay 3 gallinas y 23 patos'
>>> parse_number("चौदह लाख बत्तीस हज़ार पाँच सौ चौबीस", language='hi')
1432524
Supported cases
The library has extensive tests. Some of the supported cases are described below.
Accurately handling usage of conjunction while forming the number.
>>> parse("doscientos cincuenta y doscientos treinta y uno y doce", language='es')
'250 y 231 y 12'
Handling ambiguous cases without proper separators.
>>> parse("two thousand thousand")
'2000 1000'
>>> parse_number("two thousand two million")
2002000000
Handling nuances in the languag ith different forms of the same number.
>>> parse_number("пятисот девяноста шести", language='ru')
596
>>> parse_number("пятистам девяноста шести", language='ru')
596
>>> parse_number("пятьсот девяносто шесть", language='ru')
596
Contributing
Source code: https://github.com/scrapinghub/number-parser
Issue tracker: https://github.com/scrapinghub/number-parser/issues
Changes
0.3.2 (2023-03-28)
Fix: - Fix import bug (#91)
0.3.1 (2023-03-22)
Improvements: - Add Python 3.10, 3.11 support (#83) - Add __version__ (#87) - Replace OrderedDict with dict (#88)
Fix: - Inconsistent white space handling around sentence separators following numbers (#76, #77)
0.3.0 (2022-10-20)
Improvements: - Added support for bigger numbers in Spanish (#43) - Added pytest flake8 (#44) - Refactored the code (#45) - Improved testing (#46) - Improved scripts (#47) - Added tests (#50, #72) - Added GitHub actions (#54, #55, #56, #57) - Added support for simple fractions (#60)
New features: - Added feature to parse numbers in Ukrainian (#79)
0.2.1 (2020-08-25)
Fix tokenization bug - Hindi
0.2.0 (2020-08-18)
Ordinal Number Support
0.1.0 (2020-07-30)
Initial release.
Release files for number-parser 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| number-parser-0.3.2.tar.gz | 42.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| number_parser-0.3.2-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 93.7 kB
Release files / number-parser-0.3.2.tar.gz
| Download URL | number-parser-0.3.2.tar.gz |
|---|---|
| Size | 42.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7650e91afd46dec2f40396f62c2babc84645679a1ca8ecdb5292bdd252685d6a
|
|
BLAKE2b-256 checksum How to use checksums |
28c11a3ea159327b442d2202fda38845124a51a3abe11637cbd3111479fd815f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.2
|
Release files / number_parser-0.3.2-py2.py3-none-any.whl
| Download URL | number_parser-0.3.2-py2.py3-none-any.whl |
|---|---|
| Size | 51.3 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
beb20ce4c66d8e8f34dde1512a21f7c2a2aa3b068c60e230c4388d548ef3e3ca
|
|
BLAKE2b-256 checksum How to use checksums |
c73385138cd4a8561d7f1722490612d30cbfab170fd6d38021b193072eecc1db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.2
|