【问题标题】:processing csv files with line breaks in fields - node.js在字段中处理带有换行符的 csv 文件 - node.js
【发布时间】:2016-05-11 09:05:33
【问题描述】:

我正在尝试处理字段内带有换行符 (\n) 的 csv 文件。每个字段都用双引号括起来。是否有任何 node.js 包可以处理这种类型的 csv?

我尝试用 node.js 中的 readline 解析它。即使它们在同一个字段中,它也会将这些行检测为单独的记录。

【问题讨论】:

  • 你试过json-2-csv吗?
  • 为了清楚起见,分隔符实际上是 CSV 中的逗号吗?
  • 是的,逗号分隔的 csvs。所有字段都用引号括起来。

标签: javascript arrays node.js parsing npm


【解决方案1】:

csv 可以处理包含换行符的行:

'use strict'

let csv = require('csv');

let str = `id;name;desc
"1";"name1";"desc
on multiple
line"
"2";"name2";"desc2"`;

csv.parse(str,
    {
        delimiter: ';', // default is ,
        columns: true,  // if the first of the csv line is headers
    },
    (err, data) => {
        if (err) console.log(err);
        console.log(JSON.stringify(data, null, 3));
    });

/* output:
[
   {
      "id": "1",
      "name": "name1",
      "desc": "desc\non multiple\nline"
   },
   {
      "id": "2",
      "name": "name2",
      "desc": "desc2"
   }
]
*/

/* without column: true
[
   [
      "id",
      "name",
      "desc"
   ],
   [
      "1",
      "name1",
      "desc\non multiple\nline"
   ],
   [
      "2",
      "name2",
      "desc2"
   ]
]
*/

【讨论】:

  • 这里的输出是一个 JSON 对象数组。我发现“fast-csv”是另一个可以处理此类 csv 的软件包。它支持输出为字符串数组,这是我想要的格式。
  • @AthulJayson,如果你去掉column: true(或将其设置为false),csv 也会给出一个字符串数组。我用没有column: true 的输出更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-18
  • 1970-01-01
  • 2018-11-04
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多