任务描述:
有一个csv文件, 但是其中某些行的字段的值是一个json数组,数组的值又是json对象,内部有很多','。
这导致,在其它的数据分析工具中,无法进行处理。
现在我们希望,把这个json数组拆分开来,取出内部的值,然后对于字段值不是json的则补空位,形成一个比较规整的表格。遍历于后面分析。
最好的语言,是熟悉的语言。
所以我用了js,当然因为是处理文件,所以肯定是nodejs.
不过熟悉是相对的,真正开始还是要靠google。
思路
大概的思路就是,使用readline模块,逐行读取文件,然后对于每一行,首先使用split(,)切分开来,然后对数组的长度进行判断,数组长度超过规定值的,就是内部包含json数组的,因为json数组的位置,总是在第3个到导数第2个之间,使用slice()函数,提取出来。然后把这个不规整的数组,用join()拼成json字符串,再解析出数组,提取出值,写回去,对于正常的行,则使用一个固定的模式填补。
代码
const readline = require('readline');
const fs = require('fs');
const os = require('os')
let inputName = process.argv[2] || 'xxx.csv' // 输入文件