我有一個類似如下的多行一些日誌文件:如何從文本文件實例化一組對象?
<tickPrice tickerId=0, field=2, price=201.81, canAutoExecute=1>
<tickSize tickerId=0, field=3, size=25>
<tickSize tickerId=0, field=8, size=534349>
<tickPrice tickerId=0, field=2, price=201.82, canAutoExecute=1>
我需要定義一個類類型tickPrice或tickSize的。在做定義之前,我需要決定使用哪一個。
抓取這些值的Pythonic方法是什麼?換句話說,我需要一個有效的方法來反轉str()在一個類上。
這些類已經定義並且只包含提供的變量,例如tickPrice.tickerId
。我試圖找到一種方法從文本中提取這些值並設置實例屬性以匹配。
編輯:回答
這是我結束了doing-
with open(commandLineOptions.simulationFilename, "r") as simulationFileHandle:
for simulationFileLine in simulationFileHandle:
(date, time, msgString) = simulationFileLine.split("\t")
if ("tickPrice" in msgString):
msgStringCleaned = msgString.translate(None, ''.join("<>,"))
msgList = msgStringCleaned.split(" ")
msg = message.tickPrice()
msg.tickerId = int(msgList[1][9:])
msg.field = int(msgList[2][6:])
msg.price = float(msgList[3][6:])
msg.canAutoExecute = int(msgList[4][15:])
elif ("tickSize" in msgString):
msgStringCleaned = msgString.translate(None, ''.join("<>,"))
msgList = msgStringCleaned.split(" ")
msg = message.tickSize()
msg.tickerId = int(msgList[1][9:])
msg.field = int(msgList[2][6:])
msg.size = int(msgList[3][5:])
else:
print "Unsupported tick message type"
會是什麼這樣一類的樣子? –
你問如何instantiante已經定義的類的實例嗎?或者如何定義這些值的動態類的需求?無論哪種方式,您是否可以展示您解決問題的嘗試,而不是帶有(模糊)規範的數據樣本? –
我會定義這兩個類。然後將它們存儲在字典中,並將其名稱作爲密鑰。在它們的構造函數中爲每個包含在「kwargs」中的項目執行一個'setattr'。夠清楚了嗎? ;)也許不是最好的方式 – Pynchia