小编Syn*_*leb的帖子

如何用Node.js解析脏CSV?

由于许多错误,我正在抓住我无法正确解析的CSV文件.我提取了一个可以在这里下载的样本:测试CSV文件

主要错误(或产生错误的原因)是:

  • 引号和逗号(尝试使用R解析文件时出现许多错误)
  • 空行
  • 字段内的意外换行

我首先决定逐行使用正则表达式来清理数据,然后将它们加载到R中,但无法解决问题,这是两个慢(200Mo文件)

所以我决定在Node.js下使用CSV解析器,代码如下:

'use strict';

const Fs  = require('fs');
const Csv = require('csv');

let input       = 'data_stack.csv';
let readStream  = Fs.createReadStream(input);
let option      = {delimiter: ',', quote: '"', escape: '"', relax: true};

let parser = Csv.parse(option).on('data', (data) => {
    console.log(data)
});

readStream.pipe(parser)
Run Code Online (Sandbox Code Playgroud)

但:

  • 正确解析了一些行(字符串数组)
  • 有些未解析(所有字段都是一个字符串)
  • 有些行仍然是空的(可以通过添加skip_empty_lines: true选项来解决)
  • 我不知道如何处理意外的换行符.

我不知道如何使这个CSV干净,无论是R还是Node.js.

有帮助吗?

编辑:

在@Danny_ds解决方案之后,我可以正确解析它.现在我无法正确地将其串回来.

与console.log();我得到一个合适的对象,但是当我试图字符串化它,我没有得到一个干净的CSV(仍然有断行和空行).

这是我正在使用的代码:

'use strict';

const Fs  = require('fs');
const Csv = require('csv');


let input  = 'data_stack.csv';
let …
Run Code Online (Sandbox Code Playgroud)

javascript csv parsing node.js

7
推荐指数
1
解决办法
6180
查看次数

标签 统计

csv ×1

javascript ×1

node.js ×1

parsing ×1