我datetime
在Python中遇到了一些问题。我有来自csv文件的数据:
user_id,timestamp
563,0:00:21
671,0:00:26
780,0:00:28
这是我的代码:
import csv
from datetime import datetime
path = "/home/haldrik/dev/python/data/dataset.csv"
file = open(path, newline='')
reader = csv.reader(file, delimiter=',')
header = next(reader) # Ignore first row.
data = []
for row in reader:
# row = [user_id, timestamp]
user_id = row[0]
timestamp = datetime.strptime(row[1], '%H:%M:%S').time()
data.append([user_id, timestamp])
该代码将引发以下错误:
Traceback (most recent call last):
File "/home/haldrik/dev/python/instances_web_site.py", line 15, in <module>
date = datetime.strptime(row[1], '%H:%M:%S').time()
File "/usr/lib/python3.8/_strptime.py", line 568, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "/usr/lib/python3.8/_strptime.py", line 349, in _strptime
raise ValueError("time data %r does not match format %r" %
ValueError: time data '' does not match format '%H:%M:%S'
我找不到错误在哪里。我可以看到数据格式符合指定的时间格式。
倾倒cvs导入步骤,我可以确保它可以正常工作,请参见以下代码片段(上述代码中未包含):
data_import = [row for row in reader]
print(data_import[0])
它输出以下内容:
['563','0:00:21']
440,
并且将导致time data '' does not match format '%H:%M:%S'
date = datetime.strptime(row[1], '%H:%M:%S').time()
成try-except
块。test.csv
user_id,timestamp
563,0:00:21
671,0:00:26
780,0:00:28
440,
import csv
from datetime import datetime
path = "test.csv"
file = open(path, newline='')
reader = csv.reader(file, delimiter=',')
header = next(reader) # Ignore first row.
data = []
for row in reader:
# row = [user_id, timestamp]
user_id = row[0]
try:
timestamp = datetime.strptime(row[1], '%H:%M:%S').time()
except ValueError as e:
timestamp = row[1]
# continue # use this if you do not want the row added to data, comment it out otherwise
data.append([user_id, timestamp])
print(data)
[out]:
[['563', datetime.time(0, 0, 21)], ['671', datetime.time(0, 0, 26)], ['780', datetime.time(0, 0, 28)], ['440', '']]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句