Formatar números para strings em Python

votos
91

Eu preciso descobrir como formatar números como strings. Meu código é aqui:

return str(hours)+:+str(minutes)+:+str(seconds)+ +ampm

Horas e minutos são inteiros, e segundos é um float. a função str () vai converter todos estes números com os décimos (0,1) local. Então, ao invés da minha seqüência de saída 5: 30: 59.07 pm, ele iria mostrar algo como 5.0: 30,0: 59,1 pm.

Bottom line, o que de biblioteca / função que eu preciso para fazer isso por mim?

Publicado 22/08/2008 em 16:10
fonte usuário
Em outras línguas...                            


7 respostas

votos
123

Formatação em Python é feito através da formatação de string ( %operador) :

"%02d:%02d:%02d" % (hours, minutes, seconds)

/ Edit: Há também strftime .

Respondeu 22/08/2008 em 16:12
fonte usuário

votos
89

A partir de Python 2.6, há uma alternativa: o str.format()método. Aqui estão alguns exemplos usando o operador de formato de cadeia 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' 

Aqui estão os trechos equivalentes, mas 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'

Como Python 2.6+, todos Python 3 lançamentos (até agora) entender como fazer as duas coisas. Eu rasguei descaradamente este material em linha reta fora de meu incondicional livro Python introdução e os slides para os Intro + Intermediário cursos Python I oferecer de tempos a tempos.:-)

Respondeu 31/03/2010 em 06:13
fonte usuário

votos
6

Em Python 2.6+, é possível usar a format()função, portanto, em seu caso, você pode usar:

return '{:02d}:{:02d}:{:.2f} {}'.format(hours, minutes, seconds, ampm)

Existem várias maneiras de usar esta função, portanto, para mais informações você pode verificar a documentação .

Respondeu 27/12/2016 em 21:51
fonte usuário

votos
4

Você pode usar C formatação seqüência de estilo:

"%d:%d:d" % (hours, minutes, seconds)

Veja aqui, especialmente: https://web.archive.org/web/20120415173443/http://diveintopython3.ep.io/strings.html

Respondeu 22/08/2008 em 16:13
fonte usuário

votos
2

Você pode usar o seguinte para alcançar a funcionalidade desejada

"%d:%d:d" % (hours, minutes, seconds)
Respondeu 08/10/2014 em 07:06
fonte usuário

votos
1

Se você tiver um valor que inclui um decimal, mas o valor decimal é insignificante (isto é: 100,0) e tentar int isso, você receberá um erro. Parece bobagem, mas chamando flutuador primeiro corrige isso.

str (int (flutuador ([variável])))

Respondeu 26/07/2010 em 16:46
fonte usuário

votos
1

str () em python em um inteiro será não imprimir quaisquer casas decimais.

Se você tem um carro que você deseja ignorar a parte decimal, então você pode usar str (int (floatValue)).

Talvez o seguinte código vai demonstrar:

>>> str(5)
'5'
>>> int(8.7)
8
Respondeu 24/08/2008 em 11:32
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more