Имя: Пароль:
1C
1С v8
Обработка файла CSV - разделители в значениях ячеек
0 ac13
 
20.04.21
14:45
Есть файл CSV с разделителем ячеек "точка с запятой" - ;
При этом значения ячеек тоже могут содержать этот символ.
При чтении файла в 1С и разбиении строки на колонки - те строки, где есть ; в значениях ячеек - разбиваются неправильно.
В таких случаях есть варианты считать файл "правильно"?
1 Garykom
 
гуру
20.04.21
14:46
(0) ""
2 Garykom
 
гуру
20.04.21
14:47
"Значения, содержащие зарезервированные символы (двойная кавычка, запятая, точка с запятой, новая строка) обрамляются двойными кавычками ("). Если в значении встречаются кавычки — они представляются в файле в виде двух кавычек подряд."
3 Dark_Warrior
 
20.04.21
14:48
Механизм самодельный? Может экранировать, по типу json?
4 Garykom
 
гуру
20.04.21
14:48
Правильный разбор CSV это не тупое СтрРазделить а конечный автомат
5 ac13
 
20.04.21
14:51
(2) то есть, когда при чтении файла, если значения ячеек содержат точку с запятой, они там будут как ";"?
6 Garykom
 
гуру
20.04.21
14:54
(5) нет
"Если значение файла содержит ; или "", оно там будет вот так",343,оварвоаров, А тут не содержит служебных, лорол,454
7 Garykom
 
гуру
20.04.21
14:56
(6)+ По дефолту для упрощения все строковые значения берут в "" а числовые нет
8 Garykom
 
гуру
20.04.21
14:57
(7)+ Разбор CSV представляет себе конечный автомат, разбирающий каждую строку по символам по одному
Имеющий несколько состояний после чтения очередного символа и разносящий символы по значениям, с правильными заменами "" на "
9 Garykom
 
гуру
20.04.21
15:00
Для скорости можно разделить всю строку на подстроки по ;
А затем проанализировать разбитые на содержание внутри и чем начинается/заканчивается
И правильно сложить строки излишне разбитые и выполнить замены символов
10 ac13
 
20.04.21
15:02
понял, спасибо! помогли)
11 Garykom
 
гуру
20.04.21
15:11
(10) Напишешь выложи правильный разбор CVS на ИС или гитхаб
Вроде как еще нету
12 Garykom
 
гуру
20.04.21
15:11
(11) *CSV
13 Garykom
 
гуру
20.04.21
15:12
(11)+ причем с возможностью указать разделитель (, или ; или еще что) и ограничитель (" обычно но может и другой быть)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан