在Python中将数字格式化为string

我需要找出如何将数字格式化为string。 我的代码在这里:

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

小时和分钟是整数,秒是浮点数。 str()函数将所有这些数字转换为十分之一(0.1)的地方。 所以不是输出“5:30:59.07”的string,而是显示“5.0:30.0:59.1 pm”。

底线,我需要什么图书馆/function为我做这个?

在Python中格式化是通过string格式( % )操作符完成的 :

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

/编辑:还有strftime 。

从Python 2.6开始,有一个select: str.format()方法。 以下是使用现有string格式运算符( % )的一些示例:

 >>> "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版本(到目前为止)都明白如何做到这一点。 我无耻地从我的核心Python入门书和我不时提供的Intro + Intermediate Python课程的幻灯片中直接撕下了这些东西。 :-)

你可以使用C风格的string格式:

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

请参阅此处,特别是: https : //web.archive.org/web/20120415173443/http : //diveintopython3.ep.io/strings.html

在Python 2.6+中,可以使用format()函数,所以你可以使用:

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

有多种使用此function的方法,所以有关更多信息,可以查看文档 。

您可以使用以下来实现所需的function

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

在一个整数的python str()不会打印任何小数位。

如果你有一个浮点数,你想忽略小数部分,那么你可以使用str(int(floatValue))。

也许下面的代码将会演示:

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

如果你有一个包含小数的值,但是十进制值可以忽略不计(例如:100.0)并尝试int,那么你将会得到一个错误。 这似乎很愚蠢,但调用浮动首先解决这个问题。

STR(INT(浮动([variables])))