separador separacion miles funcion concatenar python number-formatting

python - separacion - ¿Cuál es la forma más fácil de agregar comas a un número entero?



separador de miles en python (4)

Posible duplicado:
¿Cómo se imprime el número con comas como separadores de miles?

Por ejemplo:

>> print numberFormat(1234) >> 1,234

¿O hay una función incorporada en Python que hace esto?


Despojado de webpy utils.py :

def commify(n): """ Add commas to an integer `n`. >>> commify(1) ''1'' >>> commify(123) ''123'' >>> commify(1234) ''1,234'' >>> commify(1234567890) ''1,234,567,890'' >>> commify(123.0) ''123.0'' >>> commify(1234.5) ''1,234.5'' >>> commify(1234.56789) ''1,234.56789'' >>> commify(''%.2f'' % 1234.5) ''1,234.50'' >>> commify(None) >>> """ if n is None: return None n = str(n) if ''.'' in n: dollars, cents = n.split(''.'') else: dollars, cents = n, None r = [] for i, c in enumerate(str(dollars)[::-1]): if i and (not (i % 3)): r.insert(0, '','') r.insert(0, c) out = ''''.join(r) if cents: out += ''.'' + cents return out

Hay otras soluciones here .


Nadie ha mencionado hasta ahora la nueva opción '','' que se agregó en la versión 2.7 al Mini-lenguaje de especificación de formato - vea PEP 378: Especificador de formato para separador de miles en el documento Novedades en Python 2.7 . Es fácil de usar porque no tiene que perder el tiempo con la locale (pero está limitado para la internacionalización debido a eso, consulte el PEP original 378 ). Funciona con flotadores, ints y decimales, y todas las demás funciones de formato que se incluyen en la especificación del mini idioma.

Uso de muestra:

print format(1234, ",d") # -> 1,234 print "{:,d}".format(1234) # -> 1,234

Nota: si bien esta nueva característica es definitivamente útil, en realidad no es tan difícil de usar el módulo de locale , como han sugerido otros. La ventaja es que la salida numérica se puede hacer para seguir automáticamente las convenciones de separador de miles (y otras) adecuadas que se utilizan en varios países al generar datos como números, fechas y horas. También es muy fácil poner en práctica las configuraciones predeterminadas de su computadora sin aprender un montón de códigos de idioma y país. Todo lo que necesitas hacer es:

import locale locale.setlocale(locale.LC_ALL, '''') # empty string for platform''s default settings

Después de hacer eso, simplemente puede usar el código de tipo ''n'' genérico para generar números (tanto enteros como flotantes). Donde estoy, las comas se usan como el separador de miles, así que después de establecer la configuración regional como se muestra arriba, esto es lo que sucedería:

print format(1234, "n") # -> 1,234 print "{:n}".format(1234) # -> 1,234

Gran parte del resto del mundo usa puntos en lugar de comas para este propósito, por lo que establecer la configuración regional predeterminada en muchas ubicaciones (o especificar explícitamente el código para dicha región en una llamada a setlocale() ) produce lo siguiente:

print format(1234, "n") # -> 1.234 print "{:n}".format(1234) # -> 1.234

La salida basada en el especificador de tipo de formato ''d'' o '',d'' no se ve afectada por el uso (o la no utilización) de setlocale() . Sin embargo, el especificador ''d'' se ve afectado si en su lugar usa las locale.format() o locale.format_string() .


Use locale.format() en el entero, pero tenga cuidado con la configuración regional actual en su entorno. Es posible que algunos entornos no tengan este conjunto o algo que no le dé un resultado cómodo.

Aquí hay un código que tuve que escribir para tratar este problema exacto. Dependiendo de su plataforma, establecerá automáticamente la configuración regional:

try: locale.setlocale(locale.LC_ALL, ''en_US.UTF-8'') #use locale.format for commafication except locale.Error: locale.setlocale(locale.LC_ALL, '''') #set to default locale (works on windows) score = locale.format(''%d'', player[''score''], True)


locale.format()

No te olvides de configurar la configuración regional apropiadamente primero.