我正在尝试分割csv文件中的数据,以便在我的脚本中使用。我通常用换行符分隔数据,然后用逗号分隔该行。
就像这样:
var i;
var fileData = [];
var id = 'csv file';
var file = DriveApp.getFileById(id).getAs('text/plain').getDataAsString();
var newline = dataFile.split('\n');
for(i in newLine){
var splitLine = newline[i].split(',');
fileData.push(splitLine);
};
将csv分解成一个数组,效果很好。现在我发现它不适用于单元格中引用的换行符或逗号。
我通常处理csv数据,比如'value1,value4 2\n value3,value4 4‘。现在我有了一个csv文件,它的数据包括“value4 1\nvalue1 1”,value4 2\n value3,value4 4‘。
我找到了一种分割数据的方法。str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
这里
我把它写成“\n”这样。var newline = dataFile.split("\n(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
现在它起作用了,但是它很慢。我对regex一无所知,有什么方法可以更快地编辑这个regex拆分吗?我想做的就是忽略双引号中的换行符。
编辑:
这并没有回答这个问题,如何使regex分裂得更快,但我已经为我的特定数据找到了解决办法。
我的数据在换行符前有空空间,所以在它前面有一个逗号,如",\n“,但是引号中的换行符之间有两个单词,没有逗号。“价值\n价值”。对此,我写了这样的分裂。
var newline = dataFile.split(',\n')
只是把我想要的台词分开。这比我的正则表达式要快得多,但它并不适用于所有的数据,所以我不认为它能回答我的问题。我将用它来代替更好的解决方案。
发布于 2017-02-21 13:06:50
解析CSV的实用程序函数不适用于您?CsvParser医生
https://stackoverflow.com/questions/42353363
复制相似问题