node.js - 如何使用nodejs获取csv文件中的总行数并根据行号追加为新列
问题描述
我想问问。
如何使用 nodejs 获取 CSV 文件中的总行数。
之后,我想使用 nodejs 根据行号添加一个新列(到同一个文件或创建另一个文件)。
例如 CSV 文件
Justin,36 years
Jason, 37 years
现在是 2 行,所以我想得到
1,Justin,36 years
2,Jason, 37 years
在同一个 CSV 文件中或创建另一个 CSV 文件。
请向我建议我该怎么做。
谢谢。
解决方案
这应该相对简单,我将使用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");
推荐阅读
- c++ - 在派生类中访问基类属性或字段的方法是什么?
- node.js - 异步和等待函数 Node.js
- html - 在引导程序中更改网格的背景颜色,包括它没有到达的边
- swift - 如何在 SwiftUI 中包含和调用 BSImagePicker
- r-markdown - Bookdown / Knitr / Kable 完美输出到 HTML 但没有表格到 PDF
- javascript - 如何将基于 JWT 令牌的链接作为重置密码和电子邮件验证功能的一次性使用链接
- deployment - 默认端口(8081)更改为 Windows 10 中 jfrog-artifactory-oss-7.3.2 中的不同端口
- python - 网站上的日期排序不正确?
- c - SDL2 相当于 SDLK_FIRST 和 SDLK_LAST?
- git - 有没有办法以编程方式确定存储库是否遵循 gitflow?