问题描述
我有一个CSV文件,我只需要在终端中显示第二列。我正在使用javascript和nodejs。我的CSV文件在本地文件夹中。我的CSV数据如下:
name,emails,name1,email1,name2,email2,name3,email3,name4,email4,name5,email5
这就像一个具有两列六行的数组,第一个包含名称,第二个包含电子邮件。我只想返回没有终端标题的电子邮件列表。稍后,我将不得不使用此电子邮件列表将其与其他数组进行比较。
我认为papaparse
可以实现,但是我不知道如何使用它。
我也知道fs
模块可用于读取整个文件。
如果有可能像这样转换带有或不带有键/值的数组中的数据,那也将是完美的:
[ name:'name1',email:'email1',name:'name2',email:'email2',name:'name3',email:'email3',name:'name4',email:'email4',name:'name5',email:'email5' ]
知道我还必须对另一个包含9列和960行的CSV文件执行此操作。
解决方法
此代码应解析您提到的格式的CSV文件,例如
test.csv
name,emails name1,email1 name2,email2 name3,email3 name4,email4 name5,email5
app.js
const Papa = require('papaparse');
const fs = require("fs");
let csvData = fs.readFileSync("test.csv","utf-8");
csvData = csvData.trim().replace(/([^,]+),\s*([^,\s*/gi,'$1,$2\n');
console.log("Adjusted csv:",csvData);
let { meta,data } = Papa.parse(csvData,{ header: true });
console.log("Parsed data:",data);
console.log("Metadata:",meta);
解析后的数据如下所示:
[
{ name: 'name1',emails: 'email1' },{ name: 'name2',emails: 'email2' },{ name: 'name3',emails: 'email3' },{ name: 'name4',emails: 'email4' },{ name: 'name5',emails: 'email5' }
]