Javascript 分割CSV数据时忽略带引号的换行符
我正在尝试分割csv文件中的数据,以便在脚本中使用。我通常用换行符拆分数据,然后用逗号拆分该行 像这样:Javascript 分割CSV数据时忽略带引号的换行符,javascript,csv,google-apps-script,Javascript,Csv,Google Apps Script,我正在尝试分割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 splitLin
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,value2\n value3,value4”。现在我有一个csv文件,其中包含如下数据“value1\nvalue1”、value2\n value3、value4”
我找到了一种正则表达式分割数据的方法<代码>str.split(“,(?=(?:[^\”]*\“[^\”]*\”*[^\“]*\”*[^\”]*$)”;
我像这样将它添加到“\n”中。var newline=dataFile.split(“\n(?=(?:[^\“]*\”[^\“]*\”*[^\“]*\”*[^\“]*$”)代码>
现在它工作了,但速度很慢。我对正则表达式一无所知,有没有办法编辑此正则表达式拆分以更快地工作?我只想忽略双引号中的换行符
编辑:
这并没有回答如何使正则表达式拆分更快的问题,但我已经为我的特定数据找到了一个解决方法
我的数据在换行符之前有空格,所以它前面会有一个逗号,如“,\n”,但引号中的换行符之间有两个单词,没有逗号。“值\n值”。我写了这样的拆分
var newline = dataFile.split(',\n')
我只想分几行。这比我使用的正则表达式快很多,但是它对所有数据都不起作用,所以我不认为它是对我的问题的回答。这是我将要使用的,以代替更好的解决方案。解析CSV的实用程序功能不适用于您 解析CSV的实用程序功能不适合您 我可以为常规的CSV文件,我没有问题。我刚刚在我正在处理的文件中尝试了它,它用引号将换行符当作换行符处理。我的例子也有同样的问题。我可以为常规的CSV文件,我没有问题。我刚刚在我正在处理的文件中尝试了它,它用引号将换行符当作换行符处理。我的例子也有同样的问题。在使用split或CSV解析器进行解析之前,您是否厌倦了替换/删除so str.replace(/\“/gi,”)之类的引号?谢谢,但同样的情况也会发生。CSV解析和split都会在换行符处拆分成行,无论是在引号内还是在换行符外。您是否厌倦了替换/删除so str.replace(/\“/gi,”)之类的引号,“”),然后使用split或CSV解析器进行分析?谢谢,但同样的情况也会发生。CSV解析和split都会在换行时拆分为行,无论是引号内还是引号外。