2

我有一个看起来像这样的文件:

London  XXX Europe  2020    9   7   0   0   0   2   2020    9   7   0   11  35  2   57
Tanger  XXX Africa  2020    9   7   0   29  54  2   2020    9   7   23  57  16  2   29
Doha    XXX Asia    2020    9   7   0   57  23  2   2020    9   7   23  58  48  2   11

我正在尝试将 index 组合3,4,5,6,7,8到 datetimeobject 中,并Year, Month, Day, Hour, Minute, Second.尝试对end_time. 但是,我文件中的零似乎会产生一些奇怪的输出。

这是我的代码:

path = r'c:\data\EK\Desktop\Python Microsoft Visual Studio\Extra\test_datetime.txt'

with open(path, 'r') as input_file:
    reader = csv.reader(input_file, delimiter='\t')
    for row in reader:
        start_time = (row[3] + row[4] + row[5] + row[6] + row[7] + row[8])  
        end_time = (row[10] + row[11] + row[12] + row[13] + row[14] + row[15])

        start_time = datetime.datetime.strptime(start_time, "%Y%m%d%H%M%S")
        end_time = datetime.datetime.strptime(end_time, "%Y%m%d%H%M%S")

        print(start_time)
        print(end_time)

这是我当前的输出:

2020-09-07 00:00:00
2020-09-07 01:13:05
2020-09-07 02:09:54
2020-09-07 23:57:16
2020-09-07 05:07:23
2020-09-07 23:58:48

这是我的预期输出:

2020-09-07 00:00:00
2020-09-07 00:11:35
2020-09-07 00:29:54
2020-09-07 23:57:16
2020-09-07 00:57:23
2020-09-07 23:58:48
4

1 回答 1

4

问题是,当您连接row[3] + row[4] + row[5] + row[6] + row[7] + row[8]所有个位数字段等字段时,没有前导零,因此无法正确解析它们strptime()

您可以使用字符串格式化函数来添加前导零,但首先没有理由使用strptime()。只需调用datetime.datetime()直接从值创建对象。

start_time = datetime.datetime(*map(int, row[3:9]))
end_time = datetime.datetime(*map(int, row[10:16]))
于 2021-02-18T09:23:33.643 回答