python - formato - Agregue separadores de millares ''decimal-mark'' a un número
formato miles en python (7)
Aquí hay solo una respuesta alternativa. Puede usar el operador dividido en python y mediante alguna lógica extraña. Aquí está el código
i=1234567890
s=str(i)
str1=""
s1=[elm for elm in s]
if len(s1)%3==0:
for i in range(0,len(s1)-3,3):
str1+=s1[i]+s1[i+1]+s1[i+2]+"."
str1+=s1[i]+s1[i+1]+s1[i+2]
else:
rem=len(s1)%3
for i in range(rem):
str1+=s1[i]
for i in range(rem,len(s1)-1,3):
str1+="."+s1[i]+s1[i+1]+s1[i+2]
print str1
Salida
1.234.567.890
¿Cómo puedo formatear 1000000
a 1.000.000
en Python? donde el ''.'' es el separador de miles de decimales.
Basándome en la respuesta de Mikel, implementé su solución de esta manera en mi diagrama matplotlib. Pensé que algunos podrían encontrarlo útil:
ax=plt.gca()
ax.get_xaxis().set_major_formatter(matplotlib.ticker.FuncFormatter(lambda x, loc: locale.format(''%d'', x, 1)))
Es extraño que nadie haya mencionado una solución sencilla con regex:
import re
print(re.sub(r''(?<!^)(?=(/d{3})+$)'', r''.'', "12345673456456456"))
Da el siguiente resultado:
12.345.673.456.456.456
También funciona si desea separar los dígitos solo antes de la coma:
re.sub(r''(?<!^)(?=(/d{3})+,)'', r''.'', "123456734,56456456")
da:
123.456.734,56456456
la expresión regular usa la búsqueda anticipada para verificar que el número de dígitos después de una posición dada sea divisible por 3.
Realmente no lo entendí; pero esto es lo que entiendo:
Desea convertir 1123000 a 1,123,000. Puedes hacer eso usando el formato:
Ejemplo:
>>> format(1123000,'',d'')
''1,123,000''
Si desea agregar un separador de miles, puede escribir:
>>> ''{0:,}''.format(1000000)
''1,000,000''
Pero solo funciona en Python 2.7 y superior.
Vea la sintaxis de la cadena de formato .
En versiones anteriores, puede usar locale.format() :
>>> import locale
>>> locale.setlocale(locale.LC_ALL, '''')
''en_AU.utf8''
>>> locale.format(''%d'', 1000000, 1)
''1,000,000''
el beneficio adicional de usar locale.format()
es que usará el separador de miles de su localidad, por ejemplo
>>> import locale
>>> locale.setlocale(locale.LC_ALL, ''de_DE.utf-8'')
''de_DE.utf-8''
>>> locale.format(''%d'', 1000000, 1)
''1.000.000''
Simplemente extendiendo la respuesta un poco aquí :)
Necesitaba tener un milésimo separador y limitar la precisión de un número de punto flotante.
Esto se puede lograr utilizando la siguiente cadena de formato:
> my_float = 123456789.123456789
> "{:0,.2f}".format(my_float)
''123,456,789.12''
Esto describe el mini lenguaje del especificador de format()
:
[[fill]align][sign][#][0][width][,][.precision][type]
Fuente: https://www.python.org/dev/peps/pep-0378/#current-version-of-the-mini-language
Usar itertools
puede darte más flexibilidad:
>>> from itertools import zip_longest
>>> num = "1000000"
>>> sep = "."
>>> places = 3
>>> args = [iter(num[::-1])] * places
>>> sep.join("".join(x) for x in zip_longest(*args, fillvalue=""))[::-1]
''1.000.000''