2012-10-04 64 views
1

csv文件,我有以下的Node.js代码:node.js的解析与懒惰

new lazy(fs.createReadStream('file.csv')) 
    .lines 
    .forEach(function(line){ 
    console.log(line.toString()); 
    }); 

不过,我只得到最后一行数据的这种方式。是 CSV文件的内容如下:

123,破
12345,被盗
1234567,失去

什么我错在这里做什么?

我也有同样的文件,此代码:

fs.readFile(req.files.file.path, 'utf8', function (err, data) { 
    if (err) throw err; 
    var lines = data.split(/\r?\n/); 
    console.log(lines); 
}); 

它返回下面的数组:

[ '123,broken\r12345,stolen\r1234567,lost' ] 
+0

因此,你的文件被破坏了,它应该是'\ r \ n'而不仅仅是'\ r';这在你自己的测试中很明显。 – Chad

+0

请详细说明 – user1175817

+0

库(和''data.split()')查找'\ r \ n'(回车,换行符)或'\ n'(换行符)。但是,您的csv文件正在使用'\ r'作为行分隔符。这是不正确的;使用'\ r \ n'或'\ n'编写你的csv文件。 – Chad

回答

2

\r\n\n\r都是有效的行尾,所以你需要准备分拆所有人。

将它们全部转换为共同的值,然后再进行拆分。例如:

var lines = data.replace(/\r\n?/g, "\n").split("\n");