亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 csv 模塊和 datetime 模塊解析時間戳

使用 csv 模塊和 datetime 模塊解析時間戳

泛舟湖上清波郎朗 2023-05-23 16:32:24
我datetime在使用 Python 中的模塊時遇到了一些問題。我有來自 csv 文件的數據:user_id,timestamp563,0:00:21671,0:00:26780,0:00:28這是我的代碼:import csvfrom datetime import datetimepath = "/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']
查看完整描述

1 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

您對 timestamp 列中的一個或多個值有疑問,其中一行看起來像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', '']]



查看完整回答
反對 回復 2023-05-23
  • 1 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號