【问题标题】:What is the best file format to parse?解析的最佳文件格式是什么?
【发布时间】:2010-05-06 21:45:02
【问题描述】:

场景:我正在开发一个 Rails 应用程序,它将以上传的基于文本的文件的形式输入数据。我需要在导入数据之前解析这些文件。我可以选择上传到应用程序的文件类型;上传者使用的软件 (Microsoft Access) 有几个关于文件类型的导出选项。

虽然它可能无关紧要,但我想知道是否存在最有效解析的特定文件类型。我相信这个问题可以被视为与语言无关。

(虽然 XML 经常被解析,但对于这个项目来说,它不是一种可行的文件类型。)

【问题讨论】:

  • 这个问题太开放了。您要导入什么样的数据? CSV 会工作吗? YAML 会起作用吗?
  • 一个足以完成任务并且您有现有工具可以解析?提交者有一个发射工具吗?一个简单到足以让人类在没有工具的情况下可靠地编写?细节在这里很重要...
  • 除非我们知道为什么 XML 不合适,否则很难给出一个好的答案。文件需要描述的数据的复杂性也意味着很多。或许可以考虑 CSV 或 Ini 文件格式之类的东西?
  • 可用的文件格式是 Microsoft Access 可用的任何导出类型。上传到我的应用程序的文件是从 Access 应用程序导出的。数据大概有20个字段;字符串和整数值。
  • 您可能应该编辑问题(可能还有标题和标签)以说明 Microsoft Access 必须生成该文件。如果您简要列出 Access 可以导出的内容,这也可能会有所帮助。

标签: ms-access performance parsing file-format text-parsing


【解决方案1】:

如果它是由 Access 导出的,最简单的是 CSV;特别是因为 Ruby 在 standard library 中包含一个 CSV 解析器。您将不得不做一些工作来确定 CSV 的方言(它用于分隔符,它如何处理引号);我不知道 ruby​​ 解析器在这些问题上的鲁棒性如何,但您还应该从 Microsoft Access 获得一些控制。

【讨论】:

    【解决方案2】:

    您可能想看看JSON。它是一种轻量级格式,与 XML 相比,它非常易于解析且无需后端庞大的库。

    它可以表示字符串、数字、关联数组(对象)和此类列表等类型

    【讨论】:

    • 如果我没记错的话,JSON 不是 Microsoft Access 可以导出的格式。我很抱歉没有提到要上传到我的应用程序的文件是 Access 导出文件。
    【解决方案3】:

    对于包含n的数据,我建议使用n-SV(其中n是某个字符)。这将使对文件进行词法分析成为split 的问题。

    如果你有更灵活的数据,我建议使用 JSON。

    【讨论】:

    • CSV(或 n-SV)很难自己解析,因为您必须考虑包含分隔符本身
    • 我认为 CSV 将是在以下条件下使用的最佳格式:1. 上传到我的应用程序的文件是 ms-access 导出 2. 我将在 ruby​​ 中解析
    • @anxiety:你应该回顾一下 JoelFan 提出的条件。如果您有 CSV 并且其中有一个包含 ..., "blah, foo",... 的字符串,那么您将有各种 fun 解析它。如果您接受欧洲号码,则会不时找到逗号。另外还有 1,000,000 人类可读的数字格式。我的观点是,“如果数据很复杂,请使用 CSV 引擎”。
    【解决方案4】:

    如果您必须推出自己的解析器,我建议您使用 CSV 或某种形式的分隔符分隔格式。

    如果您能够使用其他库,则有很多选择。 JSON 看起来很迷人。

    【讨论】:

    • CSV(或 n-SV)很难自己解析,因为您必须考虑包含分隔符本身
    • 很难,但可行。以下是基于 Java 的示例:parseCsvwriteCsv
    • 真的吗?我认为可以写一些非常简单的东西,可能不会很灵活,但至少可以解决他的问题。
    猜你喜欢
    • 2015-02-14
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 2011-12-18
    相关资源
    最近更新 更多