【问题标题】:How to find data type of each column from csv file using Java Script?如何使用Javascript从csv文件中查找每一列的数据类型?
【发布时间】:2015-05-18 10:35:22
【问题描述】:

我尝试使用 Java 脚本查找每列的数据类型,它打印数字、字符串和日期的字符串数据类型。

我需要每一列的数据类型,无论是日期、字符串、数字还是浮点数。

如果没有 CSV,它会打印正确的数据类型。

没有 CSV 文件的工作示例

var num=15;
var str="xyz";
console.log(typeof num);
console.log(typeof str);

Output
number
string

但使用 csv 文件,它会为所有列打印字符串。

我的 CSV 文件是:

01/01/1991,12,xyz,14.4
01/01/1992,20,abc,20.5
01/02/1980,78,xy,60.8

我正在使用 Papa Parse javascript 插件来获取每一列,然后检查数据类型。

如何从 CSV 文件中获取每一列的数据类型? 有没有其他方法可以将 CSV 解析为可以在特定行或列上遍历的数组?

【问题讨论】:

  • 我想有必要问一下您是如何解析数据的...我认为它会在“,”上进行拆分,但您是否进行任何其他处理?
  • 我正在使用 Papa Parse javascript 插件来获取每一列,然后检查数据类型。

标签: javascript csv


【解决方案1】:

当您在 javascript 变量中加载 CSV 时,该变量是一个字符串。

您必须将 csv 提取到 JSON 数组中,并且必须相应地转换每个变量。

代码:

  $.ajax({
    type: "GET",
    url: "sample.csv",
    success: function (data) { loadData(data); }
});

    /*var data = 'date,name,value\n\
        01/01/1991,xyz,14.4\n\
        01/01/1992,abc,20.5\n\
        01/02/1980,xy,60.8';
    loadData(data);*/

  function loadData(data1){
       console.log(data1);
        var dataPoints = data1.split(/\r\n|\n/);
         //console.log(lines);
       var headers = dataPoints[0].split(','); // if you have header
      var lines = [];
      console.log(headers);
        console.log(dataPoints.length);
     for (var i = 1; i < dataPoints.length; i++) {
        //console.log(i);
          var point = dataPoints[i].split(',');
        //console.log(point);
         if (point.length == headers.length) {
        var json= {};
        for (var j = 0; j < headers.length; j++) {
         if(headers[j]=='date'){
         json[headers[j]] = new Date(point[j]);
        }else if(headers[j]=='value'){
           //console.log(point[j]);
         json[headers[j]] = Number(point[j]);
        }else{
         json[headers[j]] = point[j];
        }

    }
    lines.push(json);
    console.log(json);
   }
 }

console.log(行); }

CSV 示例:

date,name,value
01/01/1991,xyz,14.4
01/01/1992,abc,20.5
01/02/1980,xy,60.8

修改后的代码

【讨论】:

  • 它没有调用 loadData 函数,在控制台中只显示我的 csv 文件的链接。
  • dataType 编辑为application/csv 或删除此属性并在控制台中查找任何错误。
  • 实际上我没有得到 ajax 响应,这就是为什么它没有继续成功功能的原因。我添加了错误函数并运行它是调用错误函数而不是成功函数。如何解决?
  • 在我的 csv 文件中,我没有您在示例 CSV 中定义的第一行。我需要从 csv 中找出每一列的数据类型,并在 csv 文件顶部添加一个新行并添加数据类型。
  • 1.转到浏览器中的网络部分并找出错误。 2.如果你的文件中没有标题名称,那么至少你必须知道各个位置字段的数据类型,否则没有选项[除了regular expression]来找出数据类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
  • 1970-01-01
  • 2018-04-11
  • 2022-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多