我正在嘗試在 Node.js 中使用 fast-csv 讀取 CSV 檔案。csv 檔案有一個標題行,其中包含 90 列。其中 87 個具有獨特的名稱。但是 3 列具有相同的標題名稱“轉換”。這顯然是一個語意錯誤。Fast-csv 抱怨標題不是唯一的并且不讀取 CSV。我知道,所有列名都應該不同,但這就是我獲取 CSV 檔案的方式。有沒有辦法讀取標題,如果某列的名稱與另一列的名稱相同,該名稱會自動轉換為“Transformation_int”,其中 int 是某個亂數?
csv.parseFile(csvFileName,
{ headers: true, delimiter: ";",
headers: headers => headers.map(
h => {h.replace( /[\r\n] /gm, " " )})
})
.on ("data", function (row) { <doing something> })
.on ("error", error => {console.log("This error occured:",error)})
.on ("end", () => { console.log("Import finished")});
uj5u.com熱心網友回復:
你根本不能使用標題,然后第一行將包含標題,你可以根據需要手動處理參考第一行的其余資料,甚至保留重復名稱:
headers: false
或者,您可以傳遞一個檢測重復的轉換函式,并重命名它們
這是一個通過添加亂數重命名重復標題的快速示例:
csv.parseFile(csvFileName, {
delimiter: ";",
headers: headers => {
// rename duplicate
headers.map((el, i, ar) => {
if (ar.indexOf(el) !== i) {
headers[i] = `${el}_${i}`;
}
});
return headers;
}
})
.on("data", function(row) {
console.log('row', row);
})
.on("error", error => {
console.log("This error occured:", error)
})
.on("end", () => {
console.log("Import finished")
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/495903.html
標籤:javascript 节点.js CSV 标题 快速csv
下一篇:拆分csv其中欄位包含逗號
