如果我在交互式提示下做这个,它会返回一种格式 - 我现在想要的格式。
但是,如果我将它分配给一个变量然后打印或使用变量,就像在第二个例子中一样(与我的文件相同),它的格式不同。
如何访问第一个输出 -
非常感谢您的帮助。
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'
答案 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
。