【问题标题】:Parse a transposed CSV with headers using PapaParse使用 PapaParse 解析带有标题的转置 CSV
【发布时间】:2017-04-08 03:27:24
【问题描述】:

我正在开发一个使用 PapaParse 作为 CSV 解析器的 CSV 上传器。对于我的 CSV,我希望我的第一列充当解析数据的标题,而不是第一行。为了获得预期的结果,我不得不在上传之前在编辑器中手动转置 CSV。

这样做的原因是,当标题位于第一列而不是第一行时,我的用户发现编辑 CSV 文件要容易得多。有没有办法在 PapaParse(甚至是 PapaParse 之外的 JavaScript)中做到这一点?

if (file != null) {
    Papa.parse(file, {
        header: true,
        complete: function (results, file) {
            console.log("Parsing complete: ", results, file);
        }
    });
}

【问题讨论】:

  • 对不起。刚刚意识到问题..

标签: javascript jquery json csv papaparse


【解决方案1】:

我建议用 PapaParse 解析数组,然后用 JS 对结果进行转置。

使用这个方法:https://stackoverflow.com/a/4492703/1625793

所以它看起来像transpose(result.data)

-- 更新--

const transposed = transpose(result.data)
const headers = transposed.shift();
const res = transposed.map(row => row.reduce((acc, col, ind) => {acc[headers[ind]] = col; return acc}, {}))

【讨论】:

  • 我之前正在研究这个问题,但是当我想使用标题时问题就来了。当 PapaParse 输出结果时,标头不正确,因此进行转置无法解决该问题。
  • 你能举个例子,什么输入(csv),你想接收什么输出JSON?
  • 非常感谢!这很好用!我不得不更改一些事情,例如将 'header: true' 设置为 'header: false' 以使其正常工作。
猜你喜欢
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 2017-05-25
  • 2015-05-26
相关资源
最近更新 更多