D3:忽略.csv中的某一行

min*_*pop 1 javascript csv d3.js

我有一个.csv文件,看起来像:

The Start Date, The User Id, The User Name,
date, id, name,
12-12-12, 12345, John Doe
01-02-13, 67891, Jane Doe
Run Code Online (Sandbox Code Playgroud)

第一行是第二行上的键的描述.我正在加载.csv文件,如下所示:

d3.csv("data.csv", function(error, data) {
  data.forEach(function(d) {
    d.date = parseDate(d.date);
    d.id   = formateID(d.id);
    d.name = formatename(d.name);
    d.close = +d.close;
  });
Run Code Online (Sandbox Code Playgroud)

我想保持第一行(描述)与我的数据模型分开,因为我仍然计划在路上使用它,但是我不允许修改.csv文件的格式.有没有办法我只能捕获这些信息:

date, id, name,
12-12-12, 12345, John Doe
01-02-13, 67891, Jane Doe
Run Code Online (Sandbox Code Playgroud)

来自csv?

mee*_*mit 9

d3.csv()函数同时执行加载解析,而不会让您有机会进行干预.由于您需要进行干预,因此您需要将csv作为纯文本加载 - 而不进行解析 - 然后删除第一行,然后将其作为String传递到csv模块进行解析.

对于加载,请使用d3.xhr() For parsing,use d3.csv.parse().

你应该得到这样的东西:

d3.xhr('data.csv').get(function (err, response) {
  var dirtyCSV = response.responseText;
  var cleanCSV = dirtyCSV.split('\n').slice(1).join('\n');
  var parsedCSV = d3.csv.parse(cleanCSV);
})
Run Code Online (Sandbox Code Playgroud)

编辑

这是一个比上面的更低成本的转换(这尚未经过测试/调试):

d3.xhr('data.csv').get(function (err, response) {
  var dirtyCSV = response.responseText;
  var firstEOL = dirtyCSV.indexOf('\n');
  var parsedCSV = d3.csv.parse(cleanCSV.substring(firstEOL+1));
})
Run Code Online (Sandbox Code Playgroud)