如何在sum()更改之前访问sum()的输出

时间:2014-01-03 17:27:10

标签: python sum timedelta

如果我在交互式提示下做这个,它会返回一种格式 - 我现在想要的格式。

但是,如果我将它分配给一个变量然后打印或使用变量,就像在第二个例子中一样(与我的文件相同),它的格式不同。

如何访问第一个输出 -

非常感谢您的帮助。

import datetime
tote = datetime.timedelta(0, 25200), datetime.timedelta(0, 25200)
sum(tote, datetime.timedelta(0))
datetime.timedelta(0, 50400)


import datetime
tote = datetime.timedelta(0, 25200), datetime.timedelta(0, 25200)
brac = sum(tote, datetime.timedelta(0))
print brac
14:00:00



import datetime
tote = datetime.timedelta(0, 25200), datetime.timedelta(0, 25200)
brac = sum(tote, datetime.timedelta(0))
print repr(brac)
datetime.timedelta(0, 50400)
datetime.timedelta.total_seconds(repr(brac))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: descriptor 'total_seconds' requires a 'datetime.timedelta' object but 
received a 'str'

2 个答案:

答案 0 :(得分:2)

当您说print brac时,您正在访问对象的字符串表示形式。您可能想要的是print repr(brac),它为您提供了第一个代码示例生成的格式。

答案 1 :(得分:2)

Python交互式shell使用repr()函数回显表达式的结果,但print使用str()将值转换为字符串。

在这两种情况下,sum()都会生成完全相同的结果,但在第一个示例中,您会看到解释器使用repr()打印输出,在您使用的第二个结果中print并将结果转换为str()的字符串:

>>> import datetime
>>> tote = datetime.timedelta(0, 25200), datetime.timedelta(0, 25200)
>>> brac = sum(tote, datetime.timedelta(0))
>>> brac
datetime.timedelta(0, 50400)
>>> print brac
14:00:00
>>> repr(brac)
'datetime.timedelta(0, 50400)'

你不需要做任何其他事情;您已将相同的结果分配给brac