如何从CSV文件中提取特定对象?

时间:2019-03-08 17:15:30

标签: javascript csv

我正在尝试获取此csv文件的特定部分,但无法正常工作。当我尝试将其拉出时,我得到了整个专栏。这是文件的样子以及我的代码:

Demand.csv

Time,Day ahead forecast,Hour ahead forecast,Current demand
00:00,23307,22058,21942
00:05,21744,21822,21849
00:10,21744,21822,21908
00:15,21744,21822,21809
00:20,21744,21615,21736
00:25,21744,21615,21688
00:30,21744,21615,21563
00:35,21744,21371,21479
00:40,21744,21371,21378
00:45,21744,21371,21256

代码

const fs=require('fs')
const csv = require('csv-parser');


fs.createReadStream('demand.csv')
  .pipe(csv())
  .on('data', function(data){
    try {
        console.log(data.Time[1]);  
    }
    catch(err) {
        //error handler
        console.log('error');
    }
     })
  .on('end', function() {
    //some final operation
}); 

输出为:

0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2

依次类推,直到到达CSV结束为止。

我尝试了几种不同的方法,但似乎没有任何效果。我是Java的新手,因此不胜感激。我需要的一个示例是可以拉到第3行第1列的东西。00:10作为输出。谢谢。

3 个答案:

答案 0 :(得分:1)

问题是“ CSV”文件:您的屏幕截图显示您必须启用多个分隔符选项(逗号和制表符)才能使用导入工具。

尝试使用一个分隔符:逗号

Time,Day ahead forecast,Hour ahead forecast,Current demand
00:00,23307,22058,21942
00:05,21744,21822,21849
00:10,21744,21822,21908
00:15,21744,21822,21809
00:20,21744,21615,21736
00:25,21744,21615,21688
00:30,21744,21615,21563
00:35,21744,21371,21479
00:40,21744,21371,21378
00:45,21744,21371,21256

答案 1 :(得分:0)

似乎csv-parser将csv解析为对象数组。

要访问第3行第1列,应为

console.log(data[3].Time);

数据是一个array,每个元素对应一个“行”数据。因此要访问第3行,应为data[3]等。

对象keycsv中每一列的列标题访问每个单独的“列”。

要访问带有空格的对象键,可以使用“括号”

console.log(data[3].['Day ahead forecast']);

答案 2 :(得分:0)

因此,该问题可能是由于没有持续性Time Day ahead forecast, Hour ahead forecast, Current demand. 您可以解决此问题,就像建议{s {1}}分开的@searlea。

这是一个可行的例子。

https://repl.it/@subhendukundu/PaleWelcomeChord