spellmoney
Convierte montos numéricos a letras, con el formato exacto que exigen los documentos legales y financieros — cheques, facturas, recibos y contratos: CIENTO VEINTICINCO DÓLARES CON 50/100.
Existe también el puerto a TypeScript/JavaScript — misma lógica, mismos datos de moneda, mismo resultado exacto — para quien trabaja en Node.
Instalación
pip install spellmoney
Uso
from spellmoney import a_letras
a_letras(125.50)
# 'CIENTO VEINTICINCO DÓLARES CON 50/100'
a_letras(1, moneda="GTQ")
# 'UN QUETZAL CON 00/100'
a_letras(21000000, moneda="EUR")
# 'VEINTIÚN MILLONES DE EUROS CON 00/100'
a_letras(2, moneda="GBP", mayusculas=False)
# 'dos libras esterlinas con 00/100'
a_letras(10.50, centavos="palabras")
# 'DIEZ DÓLARES CON CINCUENTA CENTAVOS'
Otros idiomas
a_letras(125.50, idioma="en")
# 'ONE HUNDRED TWENTY-FIVE DOLLARS AND 50/100'
a_letras(125.50, idioma="pt", moneda="BRL")
# 'CENTO E VINTE E CINCO REAIS E 50/100'
a_letras(125.50, idioma="fr", moneda="EUR")
# 'CENT VINGT-CINQ EUROS ET 50/100'
Solo el número, sin moneda
from spellmoney import (
numero_a_letras,
numero_a_letras_en,
numero_a_letras_pt,
numero_a_letras_fr,
)
numero_a_letras(1000000) # 'un millón'
numero_a_letras(1000000000) # 'mil millones' (¡no "un billón"!)
numero_a_letras(1000000000000) # 'un billón'
numero_a_letras_en(1000000000) # 'one billion' (escala corta del inglés)
numero_a_letras_pt(21, "f") # 'vinte e uma' (concordancia de género)
numero_a_letras_fr(71) # 'soixante et onze' (base vigesimal del francés)
Monedas soportadas
Las 154 divisas activas del estándar ISO 4217. La cobertura varía según el idioma:
| Idioma | Divisas cubiertas |
|---|---|
es (español) |
154 — todas |
en (inglés) |
154 — todas |
pt (portugués, Brasil) |
46 — países lusófonos + las divisas más usadas del mundo |
fr (francés) |
45 — países francófonos + las divisas más usadas del mundo |
Si se pide una combinación de moneda e idioma que aún no existe, a_letras lanza SpellMoneyError con un mensaje explicando exactamente qué falta, en vez de fallar en silencio.
🙋 Ayuda buscada
Portugués y francés todavía tienen huecos en divisas regionales. Los pasos exactos para contribuir (fork, rama, pruebas, Pull Request) están en CONTRIBUTING.md — en español e inglés.
API
| Función | Descripción |
|---|---|
a_letras(monto, moneda="USD", idioma="es", centavos="fraccion", mayusculas=True) |
Convierte un monto con nombre de moneda. |
numero_a_letras(n) |
Solo el número, en español. |
numero_a_letras_en(n) |
Solo el número, en inglés. |
numero_a_letras_pt(n, genero="m") |
Solo el número, en portugués. |
numero_a_letras_fr(n) |
Solo el número, en francés. |
MONEDAS |
Catálogo de las 154 divisas ISO 4217. |
IDIOMAS |
("es", "en", "pt", "fr"). |
SpellMoneyError |
Error lanzado ante un monto, moneda o idioma inválidos. |
Parámetros de a_letras:
moneda— código ISO 4217. Por defecto"USD".idioma—"es","en","pt"o"fr". Por defecto"es".centavos—"fraccion"escribe50/100;"palabras"escribeCINCUENTA CENTAVOS.mayusculas—Truedevuelve el resultado en mayúsculas;False, en minúsculas.
Rango soportado
Enteros de 0 a 999,999,999,999,999. Un monto fuera de ese rango lanza SpellMoneyError, igual que un monto negativo, una moneda no reconocida o un idioma no soportado.
Desarrollo
git clone https://github.com/brandriver-bit/spellmoney.git
cd spellmoney
pip install -e ".[dev]"
pytest
Licencia
MIT — ver LICENSE.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file spellmoney-1.0.0.tar.gz.
File metadata
- Download URL: spellmoney-1.0.0.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0ce797388f47c0026b88378a4e0f4ff0efa5f1385c4c1b0203c7bba67b69eb9
|
|
| MD5 |
32684d1fdbfdc6d927c47288d8d840f6
|
|
| BLAKE2b-256 |
10e388f1254753ca7301287a01e8b1125b8ecf3ff050d9b892ab570ad4c4440c
|
File details
Details for the file spellmoney-1.0.0-py3-none-any.whl.
File metadata
- Download URL: spellmoney-1.0.0-py3-none-any.whl
- Upload date:
- Size: 16.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62e3780f8ea350dd4cea2797dcf7ba5fc0665de736923be296dfbbefb6e75a35
|
|
| MD5 |
ba0a9b24c397930738fd4c5894b954cb
|
|
| BLAKE2b-256 |
216a25661947c45f91497c82cb0cc85aa61183d9c79a954787285057b4cb0829
|