【问题标题】:Parse a csv in JavaScript with unclear amount of data per row在 JavaScript 中解析每行数据量不明确的 csv
【发布时间】:2017-08-04 15:26:38
【问题描述】:

我尝试在 html 文件中解析 JavaScript 中的 csv 文件,如下所示:

Task,started at,Done by,Start stem,top measurement,bottom measurement,time,west measurement,east measurement,time,Measured height difference,time,Actual adjustment,time,Horizontal measured offset,time,Actual adjustment,time,finished at,finished by
task;01,startedAt;8/4/2017 @ 10:58:19,doneBy;ernie,startStem;8/4/2017 @ 10:58:24,topMeasurement;0.2,bottomMeasurement;0.1,timeTB;8/4/2017 @ 10:58:39,westMeasurement;0.2,eastMeasurement;0.1,timeWE;8/4/2017 @ 10:58:44,topMeasurement;0.2,bottomMeasurement;0.1,timeTB;8/4/2017 @ 10:58:46,measuredHeightDifference;0.22,timeHE;8/4/2017 @ 10:58:59,actualAdjustmentHE;43,timeAHE;8/4/2017 @ 10:59:1,measuredHeightDifference;0.7,timeHE;8/4/2017 @ 10:59:6,actualAdjustmentHE;34,timeAHE;8/4/2017 @ 10:59:8,measuredHeightDifference;0.7,timeHE;8/4/2017 @ 10:59:13,horizontalMeasuredOffset;0.8,timeHO;8/4/2017 @ 10:59:20,actualAdjustmentHO;56,timeAHO;8/4/2017 @ 10:59:22,horizontalMeasuredOffset;0.2,timeHO;8/4/2017 @ 10:59:28,actualAdjustmentHO;23,timeAHO;8/4/2017 @ 10:59:30,horizontalMeasuredOffset;0.1,timeHO;8/4/2017 @ 10:59:34,actualAdjustmentHO;3,timeAHO;8/4/2017 @ 10:59:37,horizontalMeasuredOffset;0.1,timeHO;8/4/2017 @ 10:59:40,finishedAt;8/4/2017 @ 10:59:56,finishedBy;ernie
task;01,startedAt;8/4/2017 @ 11:0:31,doneBy;bert,startStem;8/4/2017 @ 11:0:35,topMeasurement;3,bottomMeasurement;4,timeTB;8/4/2017 @ 11:0:50,westMeasurement;3,eastMeasurement;4,timeWE;8/4/2017 @ 11:0:53,topMeasurement;5,bottomMeasurement;3,timeTB;8/4/2017 @ 11:0:56,westMeasurement;5,eastMeasurement;3,timeWE;8/4/2017 @ 11:1:0,topMeasurement;5,bottomMeasurement;3,timeTB;8/4/2017 @ 11:1:3,measuredHeightDifference;2,timeHE;8/4/2017 @ 11:1:15,actualAdjustmentHE;3,timeAHE;8/4/2017 @ 11:1:16,measuredHeightDifference;4,timeHE;8/4/2017 @ 11:1:20,actualAdjustmentHE;2,timeAHE;8/4/2017 @ 11:1:22,measuredHeightDifference;1,timeHE;8/4/2017 @ 11:1:25,actualAdjustmentHE;4,timeAHE;8/4/2017 @ 11:1:26,measuredHeightDifference;1,timeHE;8/4/2017 @ 11:1:29,horizontalMeasuredOffset;4,timeHO;8/4/2017 @ 11:1:35,actualAdjustmentHO;3,timeAHO;8/4/2017 @ 11:1:36,horizontalMeasuredOffset;4,timeHO;8/4/2017 @ 11:1:40,finishedAt;8/4/2017 @ 11:1:57,finishedBy;bert
task;01,startedAt;8/4/2017 @ 11:2:22,doneBy;bernie,startStem;8/4/2017 @ 11:2:27,topMeasurement;0.3,bottomMeasurement;0.7,timeTB;8/4/2017 @ 11:2:43,westMeasurement;0.3,eastMeasurement;0.7,timeWE;8/4/2017 @ 11:2:49,topMeasurement;0.3,bottomMeasurement;0.7,timeTB;8/4/2017 @ 11:2:51,measuredHeightDifference;4,timeHE;8/4/2017 @ 11:2:59,actualAdjustmentHE;34,timeAHE;8/4/2017 @ 11:3:1,measuredHeightDifference;5,timeHE;8/4/2017 @ 11:3:3,actualAdjustmentHE;345,timeAHE;8/4/2017 @ 11:3:5,measuredHeightDifference;5,timeHE;8/4/2017 @ 11:3:9,horizontalMeasuredOffset;4,timeHO;8/4/2017 @ 11:3:13,actualAdjustmentHO;234,timeAHO;8/4/2017 @ 11:3:15,horizontalMeasuredOffset;4,timeHO;8/4/2017 @ 11:3:18,finishedAt;8/4/2017 @ 11:3:35,finishedBy;bernie

我尝试了一些东西和库,例如 http://papaparse.com/,但我有点卡住了一个值的多个数据(而且并不总是相同数量)的问题,一个记录有多个条目。

【问题讨论】:

  • 如果您能提供minimal, verifiable, example 会更容易提供帮助。这意味着您至少应该发布您尝试过的代码示例,一个不起作用的数据类型的示例(您可能已经提供了,但是通过查看未格式化的 csv 转储很难判断),以及预期的结果。
  • 我认为发布我尝试过的东西没有意义,因为它们并没有真正起作用。我发布的 csv 是我要解析的,但主要问题是我可以在每种测量类型中进行多个测量。是否可以在此处发布表格以显示解析后的外观?我没有找到适合这个的东西
  • 我推荐优秀的jquery-csv库:github.com/evanplaice/jquery-csv

标签: javascript html csv


【解决方案1】:

CSV 的 RFC 规范不允许可变记录长度。

RFC 4180 CSV format section 2.4

要么您想修复输出 CSV 的代码(如果您可以控制它,那是理想的解决方案)以使其符合规范,或者您可以使用 split()s 进行快速而肮脏的解析器。

请注意,如果您走 DIY 路线,并且已经在解析非标准 CSV,那么您可能会在此过程中遇到各种陷阱。例如,必须为可能需要包含逗号/分号的值处理双引号,或者首先输出的任何其他超出规范的行为。

【讨论】:

  • 同意。看起来 OP 的 CSV 数据无效。每行都有(似乎是)列名。他将很难找到可以解析此自定义 CSV 的标准库。
  • 我想我可能不得不一路调整我得到的数据。我一直在寻找可以做到的东西,但我认为用这个输出尝试它并不合理
猜你喜欢
  • 2011-03-05
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多