2008-08-22 2 views
87

Мне нужно выяснить, как форматировать числа как строки. Мой код находится здесь:Номера чисел для строк в Python

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

Часы и минуты представляют собой целые числа, а секунды - поплавок. функция str() преобразует все эти числа в десятое (0,1) место. Поэтому вместо строки, выводимой «5: 30: 59.07 pm», будет отображаться нечто вроде «5.0: 30.0: 59.1 pm».

Нижняя линия, какая библиотека/функция мне нужна для этого?

ответ

120

Форматирование в Python осуществляется через string formatting (%) operator:

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

/Edit: Там также strftime.

+0

Код в вопросе использует «str()», код в ответе Konrad doesen't. Итак, вот простой пример: `myFloat = 4.55` ` myString = '% d'% (myFloat) ` ` print myString` – 2013-12-20 10:40:51

+0

Для других экземпляров, использующих float (если вы хотите показать десятичные числа), вы должны использовать `% f `вместо`% d` – jocull 2014-04-23 16:34:51

+7

@jocull True, но этот метод устарел в пользу `str.format` в любом случае, и форматирование строк работает совершенно иначе. – 2014-04-23 17:41:24

1

ул() в питона на целое число Волю не печать любых знаков после запятой.

Если у вас есть поплавок, который вы хотите игнорировать десятичную часть, вы можете использовать str (int (floatValue)).

Возможно, следующий код будет демонстрировать:

>>> str(5) 
'5' 
>>> int(8.7) 
8 
88

Начиная с Python 2.6, есть альтернатива: метод str.format(). Вот некоторые примеры использования существующего оператора формата строки (%):

>>> "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' 

Вот эквивалентные фрагменты, но с использованием 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' 

Как Python 2.6+, все Python 3-релизы (до сих пор) понять, как сделать то и другое. Я бесстыдно разорвал этот материал прямо из my hardcore Python intro book и слайды для Intro + Intermediate Python courses I offer время от времени. :-)

1

Если у вас есть значение, которое включает десятичное число, но десятичное значение пренебрежимо мало (т.е. 100.0) и попробуйте int, вы получите сообщение об ошибке. Это кажется глупым, но вызов float сначала исправляет это.

ул (интермедиат (с плавающей точкой ([переменная])))

2

Вы можете использовать следующие действия для достижения требуемой функциональности

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

В Python 2.6+, можно использовать функцию format(), так в вашем случае вы можете использовать:

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

Есть несколько способов использования этой функции, поэтому для получения дополнительной информации вы можете проверить documentation.

Смежные вопросы