如何使用javascript阅读和使用本地CSV文件中的列?

问题描述

我有一个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' }
]