2016-07-30 20 views
-1

我正在開發NodeJS項目,我正在成功上傳CSV文件並閱讀它。使用NodeJS確定CSV列的總數

現在我正在尋找提取CSV文件中的列的總數,並相應地讀取數據。

我已經使用了一些CSV Nodejs模塊,如Fast-CSV,CSV,Ya-CSV。但是,我無法提取使用這些模塊的列的總數和列的數據。如果你可以幫助我理解列的總數,並且在這個操作之後逐一讀取列,那將會非常有幫助。

+0

*「但是,我無法提取使用這些模塊的列總數」* - 這意味着什麼,完全是什麼?典型的CSV模塊爲CSV中的每一行提供了一個數組,並且該數組具有「長度」,並且該長度是文件中的列數。你還應該發佈你的代碼,這樣我們就可以看到你目前如何去做。 – Tomalak

+0

是的,我正在查找總列數並提取該特定列的數據。 –

回答

0

我會建議https://github.com/wdavidw/node-csv-parse,用三行代碼就可以解析您CSV文件導入對象的數組:

var parse = require('csv-parse/lib/sync'); 
var yourCSVFile = '"column_1","column_2"\n"value 1","value 2"\n"value 3","value 4"'; 
var records = parse(yourCSVFile, {columns: true}); 

然後打破了列很簡單:

var columnResults = {}; 

for(var row =0; row < records.length; row++){ 
    for(var column in records[row]){ 
     if(!columnResults[column]){ 
      columnResults[column] = []; 
     } 
     columnResults[column].push(records[row][column]); 
    } 
} 
console.log("Number of columns:", Object.keys(columnResults).length); 
console.log("Column names:", Object.keys(columnResults)); 
console.log("Column data:", columnResults); 

輸出:

C:\ node test.js
c列名稱:['column_1','column_2']
列數據:{column_1:['value 1','value 3'],column_2:['value 2','value 4'] }