首页 > 解决方案 > 这个 csv 文件不可读吗?(不一致的逗号)

问题描述

我有一个包含 300 万行以上的 CSV 文件。

格式应该是这样的: date, name , num1, num2

例如“2019-05-07, New York, 10, 3 2019-05-08, New york, 15, 5, 2019-05-09, New york, 12, 6”等等...

问题是每 5,000 行左右,“名称”列的值中就会包含逗号。

例如 2019-05-09,科罗拉多州丹佛市,10、9

我的脚本错误地读取了 4 列并且失败了。名称列中的某些值甚至有 3 个逗号。

请注意,名称列值没有用引号引起来,这就是它给我错误的原因。

有没有办法检测这些额外的逗号?我不认为有,所以我开始认为这个 3m+ 行的文件试图解析是没用的。

标签: javascriptcsv

解决方案


要解析,您可以拆分为一个数组,然后对外围字段使用 shift 和 pop。最后,您可以加入剩下的内容:

let line = '2019-05-09, Denver, Colorado, 10, 9';
let entries = line.split(',');

let parsed = {
  date: entries.shift().trim(),
  num2: entries.pop().trim(),
  num1: entries.pop().trim(),
  name: entries.join(',').trim()
}

console.log(parsed);

所以,回答你的问题:不,你的 csv 文件现在不是不可读的。如果将来可以附加列,并且此类列遇到与“名称”相同的问题,那么您就有麻烦了。回击文件的开发者并让他们正确引用它可能更明智。你不会出格的。


推荐阅读