A small package for handy conversion of german numerals (also ordinal / signed) written as words to numbers.
Project description
ZahlWort2num (v.0.4.2)
:de: :de: :de:
A small but useful (due shortage of/low quality support for lang_de
) package for handy conversion of german numerals (incl. ordinal number) written as string to the from numbers.
To put it differently: It allows reverse text normalization for numbers.
This package might be a good complementary lib to https://github.com/savoirfairelinux/num2words
:crying_cat_face: Currently is doesn't support swiss variant. TBD :switzerland:
PyPi direct page of project
https://pypi.org/project/zahlwort2num/
Installation
pip2 install zahlwort2num
Usage
Definition:
import zahlwort2num as w2n
Few examples:
w2n.convert('Zweihundertfünfundzwanzig') # => 225
w2n.convert('neunte') # => '9.'
w2n.convert('minus siebenhundert Millionen achtundsiebzig') # => -700000078
or even stuff like: :see_no_evil:
w2n.convert('sechshundertdreiundfünfzigtausendfünfhunderteinundzwanzig') # => 653521
Command line:
- (Obviously it is better to use a parameter enclosed with apostrophs due to possible spaces)
bin/zahlwort2num-convert 'eine Million siebenhunderteinundzwanzig'
Development
Before doing anything. Install flake8 locally by
python3 -m pip install -r requirements.txt
Make sure tests are passing
python3 -m unittest
and you locally run linter via
flake8 ./zahlwort2num/*.py --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
WIKI
TBD
Already implemented features :sunglasses:
- Theoretically it works for any numbers from range 0 upto 999 * 10^27 [big numbers]
- Command-line mode (see above)
- Supported with ordinal numerals (incl. inflections [sufficies like
'ste', 'ten'
etc. ])
In this case it returns coerced String type value e.g '15.' instead of Integer :point_up: - Relative mild rules in terms of trailing whitespaces, lower/upper-case (unification).
- Handling of signed numerals (also ordinal ones) e.g
'minus zehn'
TODO / Known issues
-
Make POC, functional for all common cases -
Ordinal number support -
Take care for exceptions / trailing whitespaces etc. -
Make structure + publish as PyPI package -
Command line support :computer: -
Added support for both non-direct usage e.g einhundert / hundert -
Simplify/refactor POC code, add better documentation -
Zwo variant -
Added linter with Test Suite as hook -
More comprehensible tests
-
Swiss variant
-
More fault tolerant (ß -> ss) etc
-
Larger scale than 10^60
-
Ordinal with very large numbers (without addons) e.g
Millionste
-
Few benchmark improvements (e.g tail recursion etc)
-
Better error handling + validation for idiotical cases (e.g
minus null Miliarde
) -
Support for fractions?
Thanks
- @warichet for addressing problem
- @spatialbitz for writing simple fix :+1:
- @psawa - adding support for
zwo
case - ... lastly to any of you who uses this package ;-)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file zahlwort2num-0.4.2.tar.gz
.
File metadata
- Download URL: zahlwort2num-0.4.2.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 304eed9b2da4482803bcfa9c9ea16bd0eb9fded2b21bbae12b6cb90cd8d2da5b |
|
MD5 | f969821bcbce37404802606b39d3fc72 |
|
BLAKE2b-256 | 796ae58ad1e9ee67d4395f1ceafde041f9524ac67d276dda0e687841c2e2be6a |
File details
Details for the file zahlwort2num-0.4.2-py3-none-any.whl
.
File metadata
- Download URL: zahlwort2num-0.4.2-py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 91de4b94b4d1f6ed85d79ae5b90e3f12e1afacf67a0a1c988bfa542c2823ae47 |
|
MD5 | d64b979f35a5a3f62cc5ab8b05d692a8 |
|
BLAKE2b-256 | 49eb82b282c829be8b4566f417fde63896c2af8ce3c1eca3cb97ada055c5862c |