首页 > 解决方案 > 如何使用nodejs获取csv文件中的总行数并根据行号追加为新列

问题描述

我想问问。

如何使用 nodejs 获取 CSV 文件中的总行数。

之后,我想使用 nodejs 根据行号添加一个新列(到同一个文件或创建另一个文件)。

例如 CSV 文件

Justin,36 years
Jason, 37 years

现在是 2 行,所以我想得到

1,Justin,36 years
2,Jason, 37 years

在同一个 CSV 文件中或创建另一个 CSV 文件。

请向我建议我该怎么做。

谢谢。

标签: node.jscsv

解决方案


这应该相对简单,我将使用csv-parse模块,尽管您可以使用任何解析器。

我们将映射每一行,在每一行前面加上行号,加入并写入输出文件。

const { promisify } = require("util");
const fs = require("fs");
const readFile = promisify(fs.readFile);
const writeFile = promisify(fs.writeFile);
const parse = promisify(require("csv-parse"));

async function prependLineNumbers(inputFile, outputFile, delimiter = ",", eol = "\n") {
    const input = await readFile(inputFile, { encoding: "utf8" });
    const lines = await parse(input, { delimiter });
    // Prepend line number to each line...
    const output = lines.map((line, lineIndex) => [lineIndex + 1, ...line].join(delimiter)).join(eol)
    writeFile(outputFile, output);
}

prependLineNumbers("example.csv", "example_with_line_numbers.csv");

推荐阅读