使用csv-parser解析csv后如何获取输出?
How to obtain the output after parsing the csv using csv-parser?
我正在使用 csvparser 解析一个巨大的 csv (1.2GB) 并尝试从解析的 csv 中获取某些列数据。我试图在处理后将数据推送到数组,但只得到空数组作为输出。我该如何修复此代码?
var parse = require('csv-parse');
var output = []
var parser = parse({
delimiter: '\t',
columns: true
}, function(err, csvLine) {
for (var l = 0; l < csvLine.length; l++) {
output.push(csvLine[l].id)
}
});
console.log(output)
fs.createReadStream('file.csv', {
encoding: 'utf8'
}).pipe(parser);
console.log(output)
处的输出始终是一个空数组。请帮我解决这个问题。
我试图理解这里的 post - 。但是我无法理解和修复代码。
因为异步。行console.log(输出)在解析器变量声明之后运行。那时输出变量里面没有值。
当所有数据都从 csv 中读取时,您必须在循环后访问 输出变量 ,如下所示。
var parse = require('csv-parse');
var fs = require('fs');
var output = []
var parser = parse({
delimiter: ',',
columns: true
}, function(err, csvLine) {
for (var l = 0; l < csvLine.length; l++) {
output.push(csvLine[l].visitortype)
}
console.log(output)
});
fs.createReadStream('file.csv', {
encoding: 'utf8'
}).pipe(parser);
使用fast-csv
将文件解析为ReadableStream
,然后使用异步迭代(for await
)逐行处理。更简单。
const csv = require("fast-csv")
let myList=[];
const csvStream = csv.fromPath(filename);
for await(const row of csvStream) {
myList.push(row[1]); // get the second column
}
我正在使用 csvparser 解析一个巨大的 csv (1.2GB) 并尝试从解析的 csv 中获取某些列数据。我试图在处理后将数据推送到数组,但只得到空数组作为输出。我该如何修复此代码?
var parse = require('csv-parse');
var output = []
var parser = parse({
delimiter: '\t',
columns: true
}, function(err, csvLine) {
for (var l = 0; l < csvLine.length; l++) {
output.push(csvLine[l].id)
}
});
console.log(output)
fs.createReadStream('file.csv', {
encoding: 'utf8'
}).pipe(parser);
console.log(output)
处的输出始终是一个空数组。请帮我解决这个问题。
我试图理解这里的 post -
因为异步。行console.log(输出)在解析器变量声明之后运行。那时输出变量里面没有值。
当所有数据都从 csv 中读取时,您必须在循环后访问 输出变量 ,如下所示。
var parse = require('csv-parse');
var fs = require('fs');
var output = []
var parser = parse({
delimiter: ',',
columns: true
}, function(err, csvLine) {
for (var l = 0; l < csvLine.length; l++) {
output.push(csvLine[l].visitortype)
}
console.log(output)
});
fs.createReadStream('file.csv', {
encoding: 'utf8'
}).pipe(parser);
使用fast-csv
将文件解析为ReadableStream
,然后使用异步迭代(for await
)逐行处理。更简单。
const csv = require("fast-csv")
let myList=[];
const csvStream = csv.fromPath(filename);
for await(const row of csvStream) {
myList.push(row[1]); // get the second column
}