2012-03-12 65 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

相关问题