我正在尝试使用节点js读取csv文件。 她是我的代码
fs.readFile(config.csvUploadPath, function read(err, data) {
if (err) {
throw err;
}
console.log(data + 'my data')
});
CONSOLE:
ID
D11
D33
D55
这里我想获取列ID中的元素并将它们存储在数组中。我怎样才能做到这一点?谁能建议我帮忙。谢谢。 我的控制器:
var partnersModel = new partners(params);
fs.readFile(config.csvUploadPath, function read(err, data) {
if (err) {
throw err;
}
dataArray = data.toString().split(/\r?\n/);
dataArray.forEach(function(v,i){
if(v !== 'DUI'){
partnersModel.dui.push(v);
}
});
});
partnersModel.save(function(error, response){
答案 0 :(得分:15)
使用库,CSV有很多陷阱。我来享受这个包csv
。它位于:https://www.npmjs.com/package/csv。这是一个使用async api的非常快速的例子。
const fs = require('fs')
var parse = require('csv-parse')
fs.readFile(inputPath, function (err, fileData) {
parse(fileData, {columns: false, trim: true}, function(err, rows) {
// Your CSV data is in an array of arrys passed to this callback as rows.
})
})
由于您的文件每行没有多个值,并且除了换行符之外不包含分隔符,因此它只是简单的CSV。也许String.prototype.split()
适合你?
const fs = require('fs')
fs.readFile(inputPath, 'utf8', function (err, data) {
var dataArray = data.split(/\r?\n/); //Be careful if you are in a \r\n world...
// Your array contains ['ID', 'D11', ... ]
})
答案 1 :(得分:0)
从How to read data From *.CSV file using javascript?开始,使用jQuery-CSV库。
注意:该库旨在处理任何符合RFC 4180标准的CSV数据,包括所有最简单且最简单的边缘情况。解决方案忽视。
var fs = require('fs');
var $ = jQuery = require('jquery');
$.csv = require('jquery-csv');
var sample = './path/to/data/sample.csv';
fs.readFile(sample, 'UTF-8', function(err, csv) {
$.csv.toArrays(csv, {}, function(err, data) {
for(var i=0, len=data.length; i<len; i++) {
console.log(data[i]); //Will print every csv line as a newline
}
});
});
来自jquery-csv
的示例here的代码段。
答案 2 :(得分:0)
我在this answer中使用了流python
Python 3.7.4 (default, Aug 13 2019, 15:17:50)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import torchaudio
>>> torchaudio.initialize_sox()
0`
和fs
:
csv-parse