感謝此處發布的答案:Put data from a csv file into an array (Javascript)我已經能夠以我需要的方式拆分 csv 檔案,但我遇到了輸出問題。與代碼無關,因為它按我的意愿作業。該問題與源資料有關。
csv 檔案是按原樣提供給我的,所以我沒有意識到它們有包含逗號的欄位。這意味著拆分不能按需要進行。
這是我正在使用的代碼:
$.get("export.csv", function process(dataString) {
var lines = dataString
.split(/\n/)
.map(function(lineStr) {
return lineStr.split(",");
});
var keys = lines[0];
var objects = lines
.slice(1)
.map(function(arr) {
return arr.reduce(function(obj, val, i) {
obj[keys[i]] = val;
return obj;
}, {});
});
console.log(objects);
})
這給了我這種格式的輸出:
{
"PROBLEM_NUMBER": "ticket_number",
"CALLER_NAME": "\"surname",
"PRIORITY": " forename\"",
"CALL_TIME": "4",
"CALL_DETAILS": "date",
"RESOLVER": "group",
"RESTORING_GROUP": "\"surname",
"RESOLVING_GROUP": " forename\"",
"RESTORATION_TIME": "group",
"RAG_STATUS": "group",
"CALL_STATUS": "date",
"CALL_TYPE": "RED",
"RESTORATION_CODE": "Closed",
"SUBMITTER_GROUP": "Problem",
"ASSIGNEE_GROUP": "resolution",
"ASSIGNEE_NAME": "group",
"RESOLVED_DATE_TIME": "group",
"RESTORED_DATE_TIME": "",
"TIME_WITH_TEAM": "date",
"MONTH/YEAR\r": "date",
"undefined": "Jan-21\r"
}
如您所見,最終欄位是“未定義”,因為 2 個欄位包含逗號并且拆分不正確。
我知道我需要使用正則運算式來正確修改拆分,但是我不明白或不知道該放在哪里。請問有人可以幫助我嗎?
謝謝
uj5u.com熱心網友回復:
我設法解決了這個問題,所以我想我會在這里為可能遇到類似問題的其他人發帖:
為了解決它,我將正則運算式字串宣告為變數,然后在 .split() 指令中呼叫它。
我使用的正則運算式字串是 - /("[^"] "|[^,] )*,/g
我的代碼現在看起來像這樣:
$.get("export.csv", function process(dataString) {
var regex = /("[^"] "|[^,] )*,/g;
var lines = dataString
.split(/\n/)
.map(function(lineStr) {
return lineStr.split(regex);
});
var keys = lines[0];
var objects = lines
.slice(1)
.map(function(arr) {
return arr.reduce(function(obj, val, i) {
obj[keys[i]] = val;
return obj;
}, {});
});
console.log(objects);
})
這為我提供了我需要的正確輸出并相應地映射所有值
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/495904.html
標籤:javascript CSV
上一篇:當3列具有相同的標題時,在node.js中使用fast-csv讀取csv
下一篇:減去上一行中的值以按主題創建新列
