#javascript #node.js #parsing
#javascript #node.js #синтаксический анализ
Вопрос:
Я пытаюсь использовать новую версию модуля узла node-csv для выполнения некоторых манипуляций с CSV. узел-csv
В прошлом я использовал perl, но на этот раз хотел бы попробовать JavaScript. У меня возникли проблемы с пониманием того, как импортировать локальный файл CSV вместо использования встроенного генератора. Документация для node-csv не показывает, как это сделать, насколько я могу судить (хотя она предоставляет пример для предыдущей версии).
Вот пример кода, который работает так, как ожидалось.
var csv = require('csv');
var generator = csv.generate({seed: 1, columns: 2, length: 20});
var parser = csv.parse();
var transformer = csv.transform(function(data){
return data.map(function(value){return value.toUpperCase()});
});
var stringifier = csv.stringify();
generator.on('readable', function(){
while(data = generator.read()){
parser.write(data);
}
});
parser.on('readable', function(){
while(data = parser.read()){
transformer.write(data);
}
});
transformer.on('readable', function(){
while(data = transformer.read()){
stringifier.write(data);
}
});
stringifier.on('readable', function(){
while(data = stringifier.read()){
process.stdout.write(data);
}
});
Я планирую использовать модуль FS, но не уверен, как передать локальный файл в функции node-csv.
var fs = require('fs');
Вот пример для ПРЕДЫДУЩЕЙ версии, в которой используется совершенно другой синтаксис:
// node samples/sample.js
var csv = require('csv');
var fs = require('fs');
csv()
.from.stream(fs.createReadStream(__dirname '/sample.in'))
.to.path(__dirname '/sample.out')
.transform( function(row){
row.unshift(row.pop());
return row;
})
.on('record', function(row,index){
console.log('#' index ' ' JSON.stringify(row));
})
.on('end', function(count){
console.log('Number of lines: ' count);
})
.on('error', function(error){
console.log(error.message);
});
Есть предложения?