首页 > 解决方案 > 如何使用 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 文件来执行此操作。

标签: javascriptnode.jsarrayscsvpapaparse

解决方案


此代码应以您提到的格式解析 CSV 文件,例如

测试.csv

姓名,电子邮件
姓名 1,电子邮件 1
姓名 2,电子邮件 2
姓名 3,电子邮件 3
姓名 4,电子邮件 4
姓名 5,电子邮件 5

应用程序.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' }
]

推荐阅读