Formato verbal de un número en Python

¿Cómo imprimen los pitones un número como palabras, como el equivalente del código Common Lisp:

[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 

no en el núcleo de Python, pero hay una tercera parte de la biblioteca 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' 

(tenga en cuenta que 1e25 no se convierte a entero de manera precisa, ni en su ejemplo)

Acabo de comenzar un trabajo en turco, puede ser útil.

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

prettizer() una lista de cadenas, y viene con funciones de prueba fáciles randomizer() prettizer() y el prettizer() la función central humanizer()

Puede manejar números muy grandes porque no usó el método de división, pero usa la segmentación y la manipulación de cadenas.

Puede introducir el número par o cadena.

Ya que no escribí una verificación de número, incluso puede manejar un texto que no sea número 🙂

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

Aquí como una forma de hacerlo:

 def abbreviate(x): abbreviations = ["", "K", "M", "B", "T", "Qd", "Qn", "Sx", "Sp", "O", "N", "De", "Ud", "DD"] thing = "1" a = 0 while len(thing) < len(str(x)) - 3: thing += "000" a += 1 b = int(thing) thing = round(x / b, 2) return str(thing) + " " + abbreviations[a] 

Hace esto:

 >>> abbreviate(11423) 11.43 K