|
v7: Помогите прочитать строку с символом переноса | ☑ | ||
---|---|---|---|---|
0
Бамагите
03.09.19
✎
18:58
|
Имеется csv файл с разделителем ;
11 тыс строк и 900 колонок в одном из значений закрался символ переноса строки в итоге метод ПолучитьСтроку() возвращает строку не полностью :( метод ReadLine() от фсо выдает тоже самое как мне прочитать строку полностью? https://pastenow.ru/6LGQ6 |
|||
1
Злопчинский
03.09.19
✎
19:01
|
(0) как только ответишь как понять что данный перенос строки не конец данных по строке
|
|||
2
Fragster
гуру
03.09.19
✎
19:02
|
используй адодб с драйвером текст
|
|||
3
Fragster
гуру
03.09.19
✎
19:02
|
а если он не жрет - значит тот, кто делал этот цсв - чудак
|
|||
4
Злопчинский
03.09.19
✎
19:02
|
Правильный подход: при формировании выгрузки удалять из выводимых строк несимвольные значения
|
|||
5
Злопчинский
03.09.19
✎
19:03
|
(2) т что, это поможет решить проблему ТС? как?
|
|||
6
Бамагите
03.09.19
✎
19:07
|
(1) Иксель и ОО это как-то понимают... Наверное по символу 13. Но не могу же я весь этот огромный файл перебирать посимвольно.
|
|||
7
HawkEye
03.09.19
✎
19:09
|
(0) посчитай в полученной строке кол-во разделителей, если их меньше чем в предыдущей, значит надо прочитать и следующую...
дарю: СтрЧислоВхождений(<?>,) Синтаксис: СтрЧислоВхождений(<СтрИсточник>,<СтрПодстрока>) Назначение: Возвращает число вхождений строки шаблона поиска в строку поиска. Параметры: <СтрИсточник> - строка в которой ищем (место поиска); <СтрПодстрока> - строка которую ищем (шаблон поиска). |
|||
8
Russiagreat
03.09.19
✎
19:10
|
(6) можешь
|
|||
9
Злопчинский
03.09.19
✎
19:11
|
Вот примерный текст
КоличествоЗапятых = 10; //сколько полей, считаем что запятый внутри полей нет ПредыдущаяПрочитаннаяСтрока = ""; КС = Т.КоличествоСтрок(); Для ы=1 по КС Цикл Стр = Т.ПолучитьСтроку(ы); Если ПустаяСтрока(ПредыдущаяПрочитаннаяСтрока)=0 Тогда //нештатная ситуация Стр = Стр+ПредыдущаяПрочитаннаяСтрока; ПредыдущаяПрочитаннаяСтрока = ""; //ОТЛАДКА: Сообщить(Стр); //что-то нужное делаем со строкой Стр Продолжить; КонецЕсли; //здесь если все штатно Если СтрЧислоВхождений(Стр,",")<>КоличествоЗапятых Тогда //внезапный разрыв ПредыдущаяПрочитаннаяСтрока = Стр; Продолжить; КонецЕсли; //ОТЛАДКА: Сообщить(Стр); КонецЦикла; |
|||
10
Злопчинский
03.09.19
✎
19:12
|
(7) ты - знал!
|
|||
11
HawkEye
03.09.19
✎
19:12
|
(10) я стар ))))
|
|||
12
Злопчинский
03.09.19
✎
19:13
|
вот, кстати, как в Экселе в строковой ячейке принудительно вставить перенос?
|
|||
13
Бамагите
03.09.19
✎
19:14
|
(7)(9) Спасибо!
|
|||
14
Fram
03.09.19
✎
19:24
|
(12) alt+enter
|
|||
15
Злопчинский
03.09.19
✎
19:33
|
(14) спсб
|
|||
16
Garykom
гуру
03.09.19
✎
21:33
|
(7) >посчитай в полученной строке кол-во разделителей, если их меньше чем в предыдущей, значит надо прочитать и следующую...
Формат CSV разрешает символы разделителей внутри строк в "";"" "Значения, содержащие зарезервированные символы (двойная кавычка, запятая, точка с запятой, новая строка) обрамляются двойными кавычками ("). Если в значении встречаются кавычки — они представляются в файле в виде двух кавычек подряд." |
|||
17
Злопчинский
03.09.19
✎
21:35
|
(16) сие непринципиально, это уже технический момент.
|
|||
18
Garykom
гуру
03.09.19
✎
21:37
|
(17) Решение этого технического момента не совсем тривиально кто не знаком с теорией https://ru.wikipedia.org/wiki/Конечный_автомат или парсерами
|
|||
19
HawkEye
03.09.19
✎
21:39
|
(16) разве, это такая неразрешимая проблема?
|
|||
20
Garykom
гуру
03.09.19
✎
21:40
|
(19) Попробуй ))
|
|||
21
HawkEye
03.09.19
✎
21:45
|
(20) в чем проблема то заменить одну комбинацию с точкой запятой, на другую без точки запятой? вечно ты пытаешься что-то усложнить... "не множь сущности без необходимости" (с)
|
|||
22
Garykom
гуру
03.09.19
✎
21:50
|
(21) Проблема в том чтобы понять когда надо заменять а когда не надо.
"123",0,"", \n "",1,"321","",,,,,,,,"" Можно заменять )) |
|||
23
Garykom
гуру
03.09.19
✎
21:53
|
(22)+ Причем часто отступают от стандарта "двойных кавычек" и получаются извраты как в примере https://ru.wikipedia.org/wiki/CSV
Исходный текст: 1997,Ford,E350,"ac, abs, moon",3000.00 1999,Chevy,"Venture «Extended Edition»","",4900.00 1996,Jeep,Grand Cherokee,"MUST SELL! air, moon roof, loaded",4799.00 Результирующая таблица: 1997 Ford E350 ac, abs, moon 3000 1999 Chevy Venture «Extended Edition» 4900 1996 Jeep Grand Cherokee MUST SELL! air, moon roof, loaded 4799 |
|||
24
Garykom
гуру
03.09.19
✎
21:54
|
(23)+ Лишние запятые в сочетании с лишними переносами строк делают бесполезным совет (7)
|
|||
25
Garykom
гуру
03.09.19
✎
21:59
|
(22) Сорри ошибся в забыл удвоить кавычки внутри, правильная CSV строка:
"123",0,""", \n """,1,"321",""",,,,,,,,""" |
|||
26
Garykom
гуру
03.09.19
✎
22:00
|
(25) Читается как
123 0 ", \n " 1 321 ",,,,,,,," |
|||
27
Fragster
гуру
04.09.19
✎
10:06
|
(5) обычно совершенно. adodb жрет csv только в путь, и не надо заморачиваться с парсингом кавычек и разделителей
|
|||
28
Сияющий в темноте
04.09.19
✎
10:54
|
кавычки можно не только двоить,но и экранировать через \,но это уже адо не ест.
|
|||
29
Fragster
гуру
04.09.19
✎
11:08
|
(28) это локальная придумка, либо ваша, либо того, с кем вы обмениваетесь. по стандарту - двоить.
|
|||
30
Fragster
гуру
04.09.19
✎
11:09
|
для изучения и тыкания: https://tools.ietf.org/html/rfc4180
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |