Вербально отформатировать число в Python

Как pythonistas печатает число как слова, например, эквивалент Common Lisp code:

[3]> (format t "~r" 1e25)
nine septillion, nine hundred and ninety-nine sextillion, nine hundred and ninety-nine quintillion, seven hundred and seventy-eight quadrillion, one hundred and ninety-six trillion, three hundred and eight billion, three hundred and sixty-one million, two hundred and sixteen thousand

Ответ 1

нет в ядре python, но есть сторонняя библиотека num2words

>>> from num2words import num2words
>>> num2words(1e25)
'ten septillion, one billion, seventy-three million, seven hundred and forty-one thousand, eight hundred and twenty-four'

>>> num2words(10000000000000000000000000)
'ten septillion'

(обратите внимание, что 1e25 не преобразован в целое число точно, ни в вашем примере)

Ответ 2

Я только начал работу на турецком языке, это может быть полезно.

https://github.com/guneysus/humanizer-tr

Он возвращает список строк и включает в себя простые функции тестирования randomizer() prettizer() и основную функцию humanizer()

Он может обрабатывать очень большие числа, потому что он не использует разделительный подход, но использует сегментацию строк и манипуляции.

Вы можете ввести четное число или строку.

Так как я не записывал числовую проверку, он может обрабатывать не числовой текст :)

>>> humanizer('STACK OVER FLOW')
['STA Trilyon', 'CK  Milyar', 'OVE Milyon', 'R F Bin', 'LOW']