在Node.js中使用fast-csv包读取和写入CSV

我正在尝试编写一个简单的节点程序,它读取一个csv文件,提取一列(比如说第二个)并将其写入另一个CSV文件。 我正在读取内容到一个数组,然后将该数组写入文件。

阶段和数据在每一步

input文件

123,456,789,abc def,ghi,232,jkl 

排列

 ['456','ghi'] 

输出文件

 4,5,6 g,h,i 

输出需要

 456 ghi 

我只是错过了一个configuration,或者是我写数据错误的方式? END块中写入文件的代码块是否不正确?

这是我的代码

 var fast_csv = require('fast-csv'); var tempArray=new Array(); console.log("START"); fast_csv.fromPath("inputfile.txt").on("data", function(data){ tempArray.push(data[1]); }) .on("end", function(){ tempArray.sort(); console.log(tempArray); fast_csv.writeToPath("outputfile.csv", tempArray) .on("finish", function(){ console.log("END"); }); }); 

它将数组中的每个元素视为一个数组,所以'456'被视为一个具有元素4,5,6的数组。

我做的一个奇怪的解决方法是循环访问数组,并将每个元素放在自己的数组中,所以它会是:

 var newArray = []; for( var i = 0; i < tempArray.length; i++){ var arr = []; arr.push(tempArray[i]); newArray.push(arr); } 

然后写下“newArray”。

但除此之外,如果您逐行写入,则可以将每个元素放在括号内,如:

 var fast_csv = fastcsv.createWriteStream(); var writeStream = fs.createWriteStream("outputfile.csv"); fast_csv.pipe(writeStream); for(var i = 0; i < tempArray.length; i++){ fast_csv.write( [ tempArray[i] ] ); //each element inside bracket } fast_csv.end(); 

更改: tempArray.push(data[1]); 到: tempArray.push([data[1]]);

writeToPath接受一个数组的数组。

文档: https : //www.npmjs.com/package/fast-csv