Con el siguiente código podremos conseguir nuestro objetivo.
a=1234.576
print(a)
b=round(a,2)
print(b)
print("{:,}".format(b))
print("{:,}".format(b).replace(',','~').replace('.',',').replace('~','.'))
Resultado en pantalla.
Puede ver el código corriendo en el siguiente enlace.
Primero creamos la variable
a
con el valor 1234.576 y la imprimimos por pantalla. Vemos que no lleva separador de miles y que los decimales se separan con punto.Luego creamos la variable
b
redondeando la variable a usando dos decimales e imprimimos la variable b
. Seguimos sin separador de miles.Ahora imprimimos la variable
b
haciéndola pasar por el comando format
con ello conseguimos que ya tenga separador de miles. Lo que vemos es 1,234.58 que es perfectamente correcto para un anglosajón, pero en español lo que utilizamos es el punto como separador de miles y la coma como separador de decimales.En la última línea de código lo que hacemos es utilizar el comando
replace
para conseguir cambiar los puntos por comas y las comas por puntos. Se ha de utilizar replace tres veces usando un caracter arbitrario, en nuestro caso hemos usado el caracter ~
.El motivo por el que usamos tres veces el comando
replace
se debe a que la primera vez cambiamos las comas por ese caracter arbitrario ~
, la segunda vez cambiamos los puntos por comas, y la tercera vez cambiamos el caracter arbitrario ~
por puntos.Si en lugar de ese caracter arbitrario desa poner otro caracter como una x tambien funcionará. La última línea quedaría así.
print("{:,}".format(b).replace(',','x').replace('.',',').replace('x','.'))
Con esto hemos solucionado el inconveniente que tenemos en España y otros paises Latinoamericanos, ya que no todo el mundo usa los separadores habituales del idioma inglés. Si te ha resultado útil puedes dejar en los comentarios tu experiencia.
Que brutal,...es un codigo sucio, cuesta entenderlo a la primera y es extenso. Ojala encuentren la forma de que sea mas humano y por ende sencillo.
ResponderEliminarnumero = 1234567.89
Eliminarmiles_translator = str.maketrans(".,", ",.")
numero = f"{numero:,}".translate(miles_translator)
O si no quieres usar f-strings:
miles_translator = str.maketrans(".,", ",.")
numero = "{:,}".format(numero).translate(miles_translator)
Que tal?
vaya genio
ResponderEliminarGracias!! Me confundí un poco con los replace, pero me sirvió
ResponderEliminarGracias... me esta sirviendo de mucho...
ResponderEliminarla primera parte es clara y entendible muy bien muchas gracias
ResponderEliminaren la respuesta de dante tengo la duda < miles_translator = str.maketrans(".,", ",.") > no seria < miles_translator = str.maketrans(",.", ".,") >