Я пытаюсь разделить данные в файле csv, который будет использоваться в моем скрипте. Я обычно разделяю данные с помощью новой строки, а затем разделяю эту запятую запятой.Игнорирование цитируемых строк в процессе разделения 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, value2 \ n value3, value4'. Теперь у меня есть файл csv, который имеет такие данные, как «value1 \ nvalue1», value2 \ n value3, value4 '.
Я нашел регулярное выражение для разделения данных. str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
here
Я добавил его в '\ n', как это. var newline = dataFile.split("\n(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
Теперь он работает, но он очень медленный. Я ничего не знаю о регулярном выражении, есть ли способ отредактировать этот ракурс регулярного выражения, чтобы работать быстрее? все, что я хочу сделать, это игнорировать новую строку в двойных кавычках.
EDIT:
Это не дает ответа на вопрос, как сделать регулярное выражение разделить быстрее, но я нашел обходной путь для моих конкретных данных.
Мои данные имеют пустое пространство перед символом новой строки, поэтому перед ним это будет означать «, \ n», но в новой строке, которая находится в кавычках, между ними нет запятых. "Значение \ nvalue". Сделай это, я написал такой раскол.
var newline = dataFile.split(',\n')
Только разделение линий, которые я хочу. Это работает намного быстрее, чем регулярное выражение, которое у меня было, но оно не работает для всех данных, поэтому я не считаю его ответом на мой вопрос. Это то, что я буду использовать вместо лучшего решения.
У вас есть возможность заменить/удалить цитаты так, как str.replace (/ \ "/ gi," "), перед разбором с использованием парсера или CSV-парсера? –
Спасибо, но то же самое происходит. split, split в строки в строке новой строки, независимо от того, кавычки или нет. – Mullenb