por - Formato de números a cadenas en Python
listas en python (7)
Comenzando en Python 2.6, hay una alternativa: el método str.format()
. Aquí hay algunos ejemplos que usan el operador de formato de cadena existente ( %
):
>>> "Name: %s, age: %d" % (''John'', 35)
''Name: John, age: 35''
>>> i = 45
>>> ''dec: %d/oct: %#o/hex: %#X'' % (i, i, i)
''dec: 45/oct: 055/hex: 0X2D''
>>> "MM/DD/YY = %02d/%02d/%02d" % (12, 7, 41)
''MM/DD/YY = 12/07/41''
>>> ''Total with tax: $%.2f'' % (13.00 * 1.0825)
''Total with tax: $14.07''
>>> d = {''web'': ''user'', ''page'': 42}
>>> ''http://xxx.yyy.zzz/%(web)s/%(page)d.html'' % d
''http://xxx.yyy.zzz/user/42.html''
Aquí están los fragmentos equivalentes pero usando str.format()
:
>>> "Name: {0}, age: {1}".format(''John'', 35)
''Name: John, age: 35''
>>> i = 45
>>> ''dec: {0}/oct: {0:#o}/hex: {0:#X}''.format(i)
''dec: 45/oct: 0o55/hex: 0X2D''
>>> "MM/DD/YY = {0:02d}/{1:02d}/{2:02d}".format(12, 7, 41)
''MM/DD/YY = 12/07/41''
>>> ''Total with tax: ${0:.2f}''.format(13.00 * 1.0825)
''Total with tax: $14.07''
>>> d = {''web'': ''user'', ''page'': 42}
>>> ''http://xxx.yyy.zzz/{web}/{page}.html''.format(**d)
''http://xxx.yyy.zzz/user/42.html''
Al igual que Python 2.6+, todas las versiones de Python 3 (hasta ahora) comprenden cómo hacer ambas cosas. Descaradamente arranqué estas cosas de mi libro de introducción de Python hardcore y las diapositivas para los cursos de Intro + Python Intermedio que ofrezco de vez en cuando. :-)
Necesito saber cómo formatear números como cadenas. Mi código está aquí:
return str(hours)+":"+str(minutes)+":"+str(seconds)+" "+ampm
Las horas y los minutos son enteros, y los segundos son un flotador. la función str () convertirá todos estos números al lugar de los décimos (0.1). Entonces, en lugar de que mi cadena produzca "5: 30: 59.07 p.m.", se mostraría algo así como "5.0: 30.0: 59.1 p.m.".
En resumen, ¿qué biblioteca / función necesito para hacer esto por mí?
El formateo en Python se realiza mediante el operador de formato de cadena ( %
) :
"%02d:%02d:%02d" % (hours, minutes, seconds)
/ Editar: También hay tiempo strftime .
En Python 2.6+, es posible utilizar la función format()
, por lo que en su caso puede usar:
return ''{:02d}:{:02d}:{:.2f} {}''.format(hours, minutes, seconds, ampm)
Existen múltiples formas de utilizar esta función, por lo que para obtener más información puede consultar la documentation .
Puede usar el formato de cadena de estilo C:
"%d:%d:d" % (hours, minutes, seconds)
Consulte aquí, especialmente: https://web.archive.org/web/20120415173443/http://diveintopython3.ep.io/strings.html
Puede usar siguiente para lograr la funcionalidad deseada
"%d:%d:d" % (hours, minutes, seconds)
Si tiene un valor que incluye un decimal, pero el valor decimal es insignificante (es decir: 100.0) y trata de int, obtendrá un error. Parece una tontería, pero llamar a float primero soluciona esto.
str (int (float ([variable])))
str () en python en un entero no imprimirá ningún lugar decimal.
Si tiene un flotador que quiere ignorar la parte decimal, entonces puede usar str (int (floatValue)).
Quizás el siguiente código demostrará:
>>> str(5)
''5''
>>> int(8.7)
8