javascript - 如何在 NodeJS 中解析 CSV 文件
问题描述
我有一个Task.csv
包含以下内容的文件:
task1,01/05/2020, 20/05/2020, Active
task2,03/05/2020, 17/05/2020, Active
task3,10/05/2020, 25/05/2020, Active
task4,02/05/2020, 21/05/2020, Active
task5,07/05/2020, 28/05/2020, Active
我想在 JavaScript (NodeJS) 中解析它并显示用括号括起来的每一行。以下是我正在使用的代码:
function readCsvFile()
{
var fs = require('fs');
var textByLine = fs.readFileSync('Tasks.csv').toString().split("\n");
var i;<br>
for (i=0; i<textByLine.length; i++)
{
console.log("[" + textByLine[i] + "]");
}
}
我的期望:
[task1,01/05/2020, 20/05/2020, Active]
[task2,03/05/2020, 17/05/2020, Active]
[task3,10/05/2020, 25/05/2020, Active]
[task4,02/05/2020, 21/05/2020, Active]
[task5,07/05/2020, 28/05/2020, Active]
当我运行它时,输出是:
]task1,01/05/2020, 20/05/2020, Active
]task2,03/05/2020, 17/05/2020, Active
]task3,10/05/2020, 25/05/2020, Active
]task4,02/05/2020, 21/05/2020, Active
[task5,07/05/2020, 28/05/2020, Active]
我是 JavaScript 和 NodeJS 的新手,所以任何评论都会有所帮助,谢谢。
解决方案
不要同步读取文件。如果您正在阅读大文件,您可以使用内置模块readline
逐行读取文件并处理您不必担心 CLRF 的每一行。或者,使用fast-csv 之类的模块具有许多功能。
快速csv
const fs = require('fs');
const path = require('path');
const csv = require('fast-csv');
fs.createReadStream('Tasks.csv')
.pipe(csv.parse({ headers: true }))
.on('error', error => console.error(error))
.on('data', row => console.log(row))
.on('end', rowCount => console.log(`Parsed ${rowCount} rows`));
阅读线
const readline = require('readline');
const fs = require('fs');
cost lineReader = readline.createInterface({
input: fs.createReadStream('Tasks.csv')
});
let lineno = 0;
lineReader.on('line', function (line) {
lineno++
// process line here
// let colValues= line.split(",")
});
lineReader.on('close', () => {
console.log('Done reading file');
});
for await
使用循环更好的语法
for await (let line of lineReader) {
console.log(line);
}
推荐阅读
- mysql - MariaDB - 使用前一个 + 常量的值更新所有行
- macos - 缺少依赖项,但应用程序仍在 Mac M1 上运行
- matlab - 在matlab中为boxplot旋转多行xlabels
- java - 当从带有 TransactionManagementType.CONTAINER 的 bean 调用时,在带有 TransactionManagementType.BEAN 的 bean 中开始和提交事务
- java - can't find the null pointer exception
- swift - How do i disable vertical scrolling but enable horizontal scrolling in collectionview swift 4?
- postgresql - 为 Postgres 分区创建自定义哈希运算符
- spring - 如果应用程序的 application.yaml 中存在配置组合,如何使 kotlin spring boot 应用程序失败
- sql-server - 从逗号分隔的字符串生成 XML + SQL Server
- mysql - 无法在 MySQL 中进行复杂查询