[問題] 讀取CSV檔的內容建成物件

作者: ChenXY (不差不歪 一插就歪)   2018-05-22 07:01:43
小弟是最近在學Python的新手
遇到一個問題試好久都想不出來
就是如何把csv檔的內容建成物件
網路上只有查到一種方法
就是先宣告一個空陣列再藉由它加入到目標類別
但我後來測試卻也一直行不通
我大致列一下code方便大大修正一下:
class Midterm:
# 先宣告以下3個objects為空 這裡先略過
def __init__(self, problem, status, subTime):
self.problem = problem
self.status = status
self.subTime = subTime
myList = []
import csv
midtermFile = "midterm.csv"
fh = open(midtermFile, 'r', newline = '')
reader = csv.reader(fh)
headers = next(reader)
for row in reader:
myList.append(Midterm(int(row[2]), row[3], row[6]))
# 那3個objects資料分別來自此csv檔的第3,4,7個
print(row) # 這裡測試會出來
print(Midterm.problem) # 但若改直接測試輸出的物件卻是空白
# 其實捲軸有在跑並留出一大塊空白 貌似只是沒有顯示出來
# 但後續切割時間資料時就顯示沒切成功找不到subTime.H
fh.close()
另外還有個問題 就是我的subTime之後還需要跟別的時間字串比較先後
用datetime.strptime轉成時間型態好像無法比大小
所以我打算用.split(":")切成時、分、秒再用邏輯比較
這樣subTime要另外宣告成一個子類別嗎
因為我若不這樣而把它們宣告在Midterm.subTime.H #還有.M、.S
__init__就要強制我在讀取csv時同時起始.H、.M、.S的值了
以上兩個問題麻煩大大們給點意見了 謝謝﹗
作者: TitanEric (泰坦)   2018-05-22 16:01:00
你目前只把物件放在list裡面而已 如果你要看裡面放什麼應該輸出myList[-1].你要的attributedatetime部分的比較有兩個都是datetime型態嗎? 覺得日期比較直接丟給Python處理就好

Links booklink

Contact Us: admin [ a t ] ucptt.com