分割CSV,其中字段包含逗号



感谢这里发布的答案:将数据从csv文件放入数组(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/YEARr": "date",
"undefined": "Jan-21r"
}

可以看到,最后一个字段是"undefined"由于两个字段包含逗号且分割不正确。

我知道我需要使用正则表达式来修改正确的分割,但我不明白或不知道把它放在哪里。请问有人能帮我吗?

感谢

我设法解决了这个问题,所以我想我将在这里发布给其他可能遇到类似问题的人:

为了解决这个问题,我将正则表达式字符串声明为一个变量,然后在.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);
})

这给了我所需的正确输出,并相应地映射所有值

最新更新