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
Hashes for zahlwort2num-0.4.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 91de4b94b4d1f6ed85d79ae5b90e3f12e1afacf67a0a1c988bfa542c2823ae47 |
|
MD5 | d64b979f35a5a3f62cc5ab8b05d692a8 |
|
BLAKE2b-256 | 49eb82b282c829be8b4566f417fde63896c2af8ce3c1eca3cb97ada055c5862c |