【问题标题】:How to add metadata to a csv file?如何将元数据添加到 csv 文件?
【发布时间】:2019-11-22 04:24:37
【问题描述】:

我目前正在开发一个报告应用程序。我可以创建 CSV 文件来保存我的数据,但我想为每一行添加元数据,以便将来进行分组、分类等。

我不知道 CSV 文件中元数据的正确语法是什么,但我见过有人这样做:

# publisher City of Palo Alto
# updated 12/31/2010
# name GID on_street species trim_cycle  inventory_date
# datatype string  string  string  string  date:M/D/YYYY
  GID, On Street, Species, Trim Cycle  ,Inventory, Date
  1, ADDISON AV,  Celtis australis,  Large Tree, Routine Prune,  10/18/2010
  2, EMERSON ST,  Liquidambar styraciflua, Large Tree, Routine Prune,  6/2/2010

我尝试过,当打开 CSV 文件时,# 之后的数据仍然显示为一个字段。

我正在使用 Ruby 创建我的 CSV 文件。

【问题讨论】:

  • 除了数据之外,您不能将任何内容添加到 CSV 文件中。完全是数据。您可以定义具有字符串值的字段,但不允许使用 cmets。
  • 而且,如果您看到“有人在做某事”,他们并没有使用 CSV 解析器。他们要么正在预处理文件以去除注释行,要么正在逐行读取文件并解析字段。 CSV 是一种简单的格式,但它确实有一些共同的规则。

标签: ruby-on-rails ruby csv parsing metadata


【解决方案1】:

CSV 保留为“逗号分隔值”。它大致是一种文本格式,包含记录,每行一条记录,用逗号分隔的字段(在某些情况下允许使用其他分隔符,如分号; 和/或制表符\t,),第一行可能被视为标题(仍然是逗号分隔的值。)

CSV 格式不支持 cmets,也不支持元数据,也不支持其他任何内容。

在上述功能之外支持您需要的任何功能的唯一方法是使用您自己的解析器手动解析文件。除了您之外,所有CSV 读者/作者都会有效地将这些行视为普通行,并尝试将它们解析为逗号分隔的字段。

正确的方法是将元数据存储在 CSV 附近的其他文件中,或者为元数据创建一个额外的字段

【讨论】:

  • CSV 不是“粗略”的格式,它是文本。 “A comma-separated values (CSV) file is a delimited text file...”。非文本可以编码为纯文本格式。尝试将二进制文件作为文本导入会很糟糕,因为分隔符可能会在内容中任意出现。标题行可以是任何分隔符分隔选项,只要它与文件的其余分隔符匹配即可。 CSV 总是 以逗号分隔。允许使用备用分隔符,但它们不是“CSV”,因为 CSV 是一个包罗万象的术语。
  • 这是否曾经出现过,还是会出现? w3.org/TR/tabular-data-model
猜你喜欢
  • 2013-08-24
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
相关资源
最近更新 更多