Python - Transformar números a literales

 
Vista:

Transformar números a literales

Publicado por Abdiel (1 intervención) el 11/10/2003 18:27:42
Hola a todos y todas, quet tal........
necesito saber si Python puede tranformar números a literales ejmplo:
1001 <a> mil uno
o si no que sea así
uno cero cero uno
esperando respuesta gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Transformar números a literales

Publicado por Dani (12 intervenciones) el 10/02/2004 13:01:29
Que yo sepa python no tiene ningun modulo que realize dicha funcion, aunque no me hagas mucho caso que no he estudiado todos los modulos python... de todas formas Python maneja las cadenas de forma muy sencilla y realizar una conversion de números a letras es cosa de niños si empleas un diccionario. Debes tratar los numeros como cadenas desde un principio y con un codigo como el siguiente tendras lo que buscas:
dic={\"0\":\"cero\",\"1\":\"uno\"}
numero=\"1001\"
for n in numero:
print dic[n]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por Larry (1 intervención) el 12/03/2008 23:22:58
Hola te proveeo de dos funciones que te ayudaran, fueron transcritas de un codigo en VB que encontre en :
http://www.lawebdelprogramador.com/codigo/enlace.php?idp=1279&id=97&texto=Visual+Basic+para+Aplicaciones

Si digitan en el shell de python:
numero_to_letras(411641.123)

el resultado sera:
CUATROCIENTOS ONCE MIL SEISCIENTOS CUARENTA Y UNO con 12/100

Espero que les sea de ayuda

A continuacion el codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
def numero_to_letras(numero):
	indicador = [("",""),("MIL","MIL"),("MILLON","MILLONES"),("MIL","MIL"),("BILLON","BILLONES")]
	entero = int(numero)
	decimal = int(round((numero - entero)*100))
	#print 'decimal : ',decimal 
	contador = 0
	numero_letras = ""
	while entero >0:
		a = entero % 1000
		if contador == 0:
			en_letras = convierte_cifra(a,1).strip()
		else :
			en_letras = convierte_cifra(a,0).strip()
		if a==0:
			numero_letras = en_letras+" "+numero_letras
		elif a==1:
			if contador in (1,3):
				numero_letras = indicador[contador][0]+" "+numero_letras
			else:
				numero_letras = en_letras+" "+indicador[contador][0]+" "+numero_letras
		else:
			numero_letras = en_letras+" "+indicador[contador][1]+" "+numero_letras
		numero_letras = numero_letras.strip()
		contador = contador + 1
		entero = int(entero / 1000)
	numero_letras = numero_letras+" con " + str(decimal) +"/100"
	print 'numero: ',numero
	print numero_letras
 
 
def convierte_cifra(numero,sw):
	lista_centana = ["",("CIEN","CIENTO"),"DOSCIENTOS","TRESCIENTOS","CUATROCIENTOS","QUINIENTOS","SEISCIENTOS","SETECIENTOS","OCHOCIENTOS","NOVECIENTOS"]
	lista_decena = ["",("DIEZ","ONCE","DOCE","TRECE","CATORCE","QUINCE","DIECISEIS","DIECISIETE","DIECIOCHO","DIECINUEVE"),
					("VEINTE","VEINTI"),("TREINTA","TREINTA Y "),("CUARENTA" , "CUARENTA Y "),
					("CINCUENTA" , "CINCUENTA Y "),("SESENTA" , "SESENTA Y "),
					("SETENTA" , "SETENTA Y "),("OCHENTA" , "OCHENTA Y "),
					("NOVENTA" , "NOVENTA Y ")
				]
	lista_unidad = ["",("UN" , "UNO"),"DOS","TRES","CUATRO","CINCO","SEIS","SIETE","OCHO","NUEVE"]
	centena = int (numero / 100)
	decena = int((numero -(centena * 100))/10)
	unidad = int(numero - (centena * 100 + decena * 10))
	#print "centena: ",centena, "decena: ",decena,'unidad: ',unidad
 
	texto_centena = ""
	texto_decena = ""
	texto_unidad = ""
 
	#Validad las centenas
	texto_centena = lista_centana[centena]
	if centena == 1:
		if (decena + unidad)!=0:
			texto_centena = texto_centena[1]
		else :
	 		texto_centena = texto_centena[0]
 
	#Valida las decenas
	texto_decena = lista_decena[decena]
	if decena == 1 :
		 texto_decena = texto_decena[unidad]
 	elif decena > 1 :
 		if unidad != 0 :
 			texto_decena = texto_decena[1]
 		else:
 			texto_decena = texto_decena[0]
 	#Validar las unidades
 	#print "texto_unidad: ",texto_unidad
 	if decena != 1:
 		texto_unidad = lista_unidad[unidad]
 		if unidad == 1:
 			texto_unidad = texto_unidad[sw]
 
 	return "%s %s %s" %(texto_centena,texto_decena,texto_unidad)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil

RE:Transformar números a literales

Publicado por Marco Antonio (1 intervención) el 20/03/2018 01:41:37
Es exactamente lo que estaba buscando, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por ivan (1 intervención) el 17/10/2018 15:48:46
me salta error de sintaxis en la linea 27 ! lo copie y lo pegue en sublime text 3

de igual forma lo que necesito es un codigo que trasnforme numeros de 4 cifras a literar. gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

RE:Transformar números a literales

Publicado por xve (1646 intervenciones) el 17/10/2018 18:26:32
Que error te da???

Puede ser que lo ejecutes con Python3?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por Jorge (2 intervenciones) el 17/01/2021 04:56:20
Lo está corriendo en python 3 y le falta escribir la sentencia print(), entre paréntesis:
print('numero: ',numero)
print(numero_letras)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por Edu (1 intervención) el 03/12/2019 04:58:23
Excelente aporte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha disminuido su posición en 17 puestos en Python (en relación al último mes)
Gráfica de Python

RE:Transformar números a literales

Publicado por jorge (1 intervención) el 26/09/2020 00:50:00
hola cuando escribes 11, 211, 311, etc marca error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por Jorge (2 intervenciones) el 17/01/2021 04:48:35
Excelente aporte !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por Catherine Vargas Aguilar (1 intervención) el 05/08/2021 11:59:44
Muchas Gracias por tu aporte.

Quiero hacerte una pregunta, te comento que soy nueva utilizando Python por ende hacer "debug" en el código me cuesta un poco.

Validando mi texto, me he dado cuenta que la librería no me convierte algunos número de la forma correcta.

Por ejemplo: 15, lo coloca como "unocinco", 60, lo coloca como "seiscero" y así.

Me podrías ayudar con la corrección de este Bug.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por BJDS (1 intervención) el 16/05/2022 17:30:37
Gracias súper bien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por Javier Gracia (1 intervención) el 10/09/2022 15:42:10
Gracias por compartir, excelente aporte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transformar números a literales

Publicado por Andersson (1 intervención) el 26/03/2023 03:05:18
Buen dia amigo, tu codigo de conversion esta excelente, pero no encuentro como apicarlo a una columna en especifico de un DF y que en
otra columna me la diligenice con el resultado?, intente modificar la funcion pero me sale el siguiente error

attributeerror 'series' object has no attribute 'strip'

aplicandolo al DF:
Consver[['Letras']] = Consver['Year'].apply(numero_to_letras)

Ud de casualidad podria ayudarme por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Transformar números a literales

Publicado por ignacio (1 intervención) el 17/12/2021 12:21:42
##COPIA Y EJECUTA EL SIGUIENTE CÓDIGO

dic={"cero":"0","uno":"1"}
numero="uno cero cero uno"
b=[]
a=''
#print(len(numero))
for j,i in enumerate(numero):
#print(i)
#print(j)
if i != " ":
a=a+i
else:
b.append(a)
a=''
if j==len(numero)-1:
b.append(a)
print(dic[b[1]])
b[0]
numero_literal = ''
for i in b:
numero_literal=numero_literal + dic[i]
numero_literal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar