|
Обработка файла 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)+ причем с возможностью указать разделитель (, или ; или еще что) и ограничитель (" обычно но может и другой быть)
|
|
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан