2012-03-12 72 views
0

我將一系列事件存儲到一個CSV文件中,每個事件類型附帶一個不同的數據集什麼時候可以CSV記錄*不*具有相同數量的字段?

爲了說明,說我有兩個事件(會有更多):

  1. 運行,具有含速度傾斜的數據集。
  2. 睡眠,其具有包含打鼾的數據集

有存儲在CSV記錄該數據的兩個選項:

選項A

存儲在自己的領域數據的每一個可能的項目...

speed, incline, snores 

因此...

15mph, 20%, , 
, , 12 
16mph, 20%, , 
14mph, 20%, , 

選項B

存儲在自己的記錄中的每個事件......

event, value1... 

因此...

running, 15mph, 20% 
sleeping, 12 
running, 16mph, 20% 
running, 14mph, 20% 

沒有一個具體的CSV規範的consensus似乎是:

每條記錄​​「應該」包含相同數量的逗號分隔字段。

語境

  • 有一些每個具有大&不同組數據值的事件。
  • CSV數據將被其他開發者使用(我將/可能/應該/不會使用任何結構)。
  • '其他開發人員'要走向新手端和/或使用資源有限的系統。 CSV是可訪問的。
  • CSV格式作爲功能不被要求提供。儘管如果所述應用程序正在提供CSV文件,則應從現在開始以正確的方式提供它。

問題

難道是有效的 - 在這種情況下 - 一起去選擇B?

思想

選項B維持人類可讀性,這是一個優勢的水平說CSV是由人類不處理器讀取。使用自定義分析器解析這兩種方法都不是更復雜,但是選項B將使CSV格式與其他庫,框架,應用程序等無用。使用選項對個別事件的數據集的未來更改/版本可能會破壞CSV結構(殭屍, ,以保持轉發兼容性);而選項B將優雅地失敗。

編輯

這可能是針對學生和框架一樣了op​​enFrameworks,Plask,等待處理等。其中CSV 更容易實現。

+0

這取決於誰以及以後如何解析它。 – Andrey 2012-03-12 23:26:17

+0

@Andrey,請參閱上下文作爲用例。 – Ross 2012-03-12 23:30:39

+0

@JayRiggs 1也是錯字。 – Ross 2012-03-12 23:31:11

回答

1

我以前用過的任何「其他框架,庫和應用程序」都會以不同的方式處理CSV分析,因此嘗試符合其中一個或多個標準可能會使您的最終結果過於複雜。我的建議是保持簡單並使用適用於您特定任務的內容。如果人的可讀性是一項要求,那麼選項B形式的CSV可以正常工作。否則,您可能需要考慮JSON或XML。

1

正如你所說,關於內容沒有「CSV標準」。真正的答案取決於你在做什麼以及爲什麼。你提到「其他框架,庫和應用程序」。我學到的一件事是「不要過度工程師」。即今天不要編寫大量的代碼,假設你明天將其插入到其他框架中。

我說B選項是好的,除非你有使用其他應用程序等

<編輯>

具體要求已經重新讀一遍你的情況下,我可能會選擇一個輸出格式並使用它,並忘記有多種格式:

  • 具有多種輸出格式是不一致的來源(例如,一種格式,但不是另一種格式的錯誤)。
  • 有多種格式意味着需要更多的代碼是
    • 測試
    • 記錄
    • 支持

< /編輯>

0

是否有任何理由,你可以」使用XML?是的,解析起來要稍微困難一些,至少對於新手來說,但如果是這樣的話,他們可能需要練習。文件大小當然要大得多,但它是可壓縮的。

+0

也提供XML和JSON。另外XML在微處理器上可能很重/複雜。 – Ross 2012-03-12 23:32:25

相關問題