Separador de mil cadenas de formato python con espacios.

Para imprimir un número con miles de separadores, se puede usar la cadena de formato python:

'{:,}'.format(1234567890) 

Pero, ¿cómo puedo especificar que quiero un separador de espacio para miles?

Aquí está la solución mala pero simple si no quieres meterte con la locale :

 '{:,}'.format(1234567890.001).replace(',', ' ') 

Esto establecerá el entorno local en la ubicación predeterminada de tu sistema operativo:

 import locale locale.setlocale(locale.LC_ALL, '') 

Entonces puedes usar:

 "{0:n}".format(1234567890) 

La respuesta de @ user136036 es bastante buena, pero desafortunadamente no tiene en cuenta la realidad de los errores de Python. La respuesta completa podría ser la siguiente:

Variante A

Si la configuración regional de su plataforma funciona correctamente, entonces use la configuración regional:

 import locale locale.setlocale(locale.LC_ALL, '') print("{:,d}".format(7123001)) 

El resultado depende de su configuración regional y la implementación de Python que funciona correctamente.

Pero, ¿qué sucede si se rompe el formato de Python de acuerdo con la configuración regional, por ejemplo, Python 3.5 en Linux?

Variante B

Si Python no respeta el parámetro grouping=True , puede usar la configuración regional y una solución alternativa (usar formato monetario):

 locale.setlocale(locale.LC_ALL, '') locale._override_localeconv = {'mon_thousands_sep': '.'} print(locale.format('%.2f', 12345.678, grouping=True, monetary=True)) 

Por encima da 12.345,68 en mi plataforma. Establecer monetario en Falso u omitirlo: Python no agrupa a miles. Especificando locale._override_localeconv = {'thousands_sep': '.'} No hace nada.

Variante c

Si no tiene tiempo para verificar qué está funcionando bien y qué está roto con Python en su plataforma, solo puede usar la función de reemplazo de cadenas (si desea intercambiar comas y puntos a puntos y comas):

print("{:,.2f}".format(7123001.345).replace(",", "X").replace(".", ",").replace("X", "."))

Reemplazar la coma por espacio es trivial (el punto se supone separador decimal):

print("{:,.2f}".format(7123001.345).replace(",", " ")

Tendrá que usar el formato de número 'n' en cuenta la configuración regional y establecer su configuración regional en una que use un espacio como separador de miles. Sí, esto es doloroso.

'n' – Número. Esto es lo mismo que 'd' , excepto que usa la configuración regional actual para insertar los caracteres separadores de números apropiados.