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))