Python 元组中的datetime.time显示的是datetime.datetime值
在下面的代码片段中,我使用循环在元组列表中追加缺少的小时数Python 元组中的datetime.time显示的是datetime.datetime值,python,list,tuples,python-datetime,Python,List,Tuples,Python Datetime,在下面的代码片段中,我使用循环在元组列表中追加缺少的小时数 hours = [] for i in range(24): hours.append(dt.time(i, 0)) for an hour in hours: # this loop prints in the str format "HH:MM: SS" print(hour) for hour in hours: check = True for row in rows:
hours = []
for i in range(24):
hours.append(dt.time(i, 0))
for an hour in hours: # this loop prints in the str format "HH:MM: SS"
print(hour)
for hour in hours:
check = True
for row in rows:
if row[0] == hour:
check = False
break
if check == True:
rows.append((hour, None, None))
for row in rows: # This loop prints datetime.time(H,0)
print(row)
问题是打印日期时间时。元组(第二个循环)中的时间对象输出为:
datetime.time(H,0)
但是,当datetime.time位于列表(第一个循环)中时,它将以正确的格式打印:
“HH:MM:SS”
如何插入日期时间。元组中第二种格式的时间?您看到的是Python中
str
和repr
之间的差异。第一个循环是将datetime
对象打印为str
。第二个循环输出为repr
,这是Python中的一种字符串表示形式,主要用于调试
您可以使用str()
函数强制将datetime
对象打印为字符串,如下所示:
对于行中的tup:
打印(str(tup[0]),tup[1],tup[2])
为什么在第二个for循环中一小时之间有空格?如果你想要dt.time(i,0)
的文本版本,你应该对它进行强制转换。现在,这些元素是
。产生不同结果的原因是此类具有不同的\uuuu str\uuuu
和\uuu repr\uuuu
格式。容器的\uuuuu str\uuuuuu
使用包含的对象的\uuuu repr\uuuu
,因此,当仅打印类时,您使用\uuuuuu str\uuuuu
,但当它位于列表中时,您最终会打印这些对象的\uuuuuuu repr\uuu
。您的元组当前包含索引为零的datetime对象。如果您希望它包含一个字符串对象,请将您的append更改为如下内容:rows.append((str(hour),None,None))