2012-10-04 85 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");