¿Cuál es la forma más fácil de agregar comas a un entero?

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

Por ejemplo:

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

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

Nadie ha mencionado hasta ahora la nueva opción ',' que se agregó en la versión 2.7 al Mini-Idioma 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 a la internacionalización debido a eso, consulte el PEP 378 original ). Funciona con flotadores, ints y decimales, y todas las demás funciones de formato que se incluyen en las especificaciones de mini idiomas.

Uso de la 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 mucho más difícil usar el módulo de locale , como han sugerido otros. La ventaja es que luego se puede hacer que la salida numérica siga automáticamente las convenciones de separadores de miles (y otras) correctas 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 la configuración predeterminada de su computadora sin tener que 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 rest 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 no uso) de setlocale() . Sin embargo, el especificador 'd' se ve afectado si en su lugar usa las locale.format() o locale.format_string() .

locale.format()

No se olvide de establecer la configuración regional de manera apropiada primero.

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 aquí .

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)