javascript - 这个 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+ 行的文件试图解析是没用的。
解决方案
要解析,您可以拆分为一个数组,然后对外围字段使用 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 文件现在不是不可读的。如果将来可以附加列,并且此类列遇到与“名称”相同的问题,那么您就有麻烦了。回击文件的开发者并让他们正确引用它可能更明智。你不会出格的。
推荐阅读
- python - 如何使用 wordnet 中的关系查找同义词
- ruby-on-rails - 无法阻止浏览器缓存页面
- php - 如何使用 PHP 和 MySQL 从多个选择列表中将数据插入数据库
- c# - 如何在 botbuilder-v3 上的特定条件下从 QnAMakerDialog(FAQ 类型聊天机器人)调用 formflow 对话框或普通对话框
- javascript - 即使在水平溢出之后也使选项卡在滚动时处于活动状态
- python - 如何在多列标签上获得第一个非其他
- android - 请求休息服务器的 Kotlin 扩展功能
- php - 如何在 Laravel 中将嵌套关系数组转换为单个数组
- javascript - 如何从生成的代码中删除 highlightBlock 字符串
- r - 如何按两个字段分组并按日期计算每种类型的数据?