Вверх ↑
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
#1: 2009-09-26 21:46:32 ЛС | профиль | цитата
Приятного времени суток господа!

Есть текстовый файлик объемом больше 100Мб.
Структура файлика примерно такая:

    
    12345.1      34 слова слова
    12345.1 2334 слова слова
    12345.1 3 слова слова
    12345.1 1264534 слова слова
    12345.1 53 слова слова
Разделителем в данном файле является пробел.
После "12345.1" всегда разное кол-во пробелов, поэтому я не могу корректно работать с этим файлом.
Необходимо это разное кол-во пробелов превратить в один пробел, по возможности не загружая в память весь файлик, (ато 170-200Мб. это очень круто )
Самому на ум приходит организовать несколько проходов-поисков с заменой
но это как то очень тяжеловесно получается и долго обрабатывается.
Во-первых потому что несколько проходов,а
во-вторых я все равно загружаю весь файлик в память, потому что не знаю как с ним работать не загружая
У кого какие мысли есть?
Заранее всем спасибо.

карма: 1

0
Ответов: 16884
Рейтинг: 1239
#2: 2009-09-26 22:39:07 ЛС | профиль | цитата
-= DriveR =-, ничего лучше на ум не пришло, но думаю, что сейчас посыпятся предложения - что нибудь и подскажут
code_15040.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_15040.txt [1KB] [173]
Ответов: 1304
Рейтинг: 405
#3: 2009-09-26 23:03:28 ЛС | профиль | цитата
-= DriveR =- писал(а):
во-вторых я все равно загружаю весь файлик в память, потому что не знаю как с ним работать не загружая

-= DriveR =-, похо что в структуктуре файла не индексов, поэтому могу предложить только построчное чтение без загрузки в память.

карма: 3

0
Ответов: 817
Рейтинг: 52
#4: 2009-09-27 21:19:45 ЛС | профиль | цитата
Tad, Спасибо, это получилось покомпактнее моего
MAV, Отличный пример, остается разобраться в нем и прикрутить к моей задумке.
А о каких индексах идет речь?
Что то на вроде номера строки?

Если будут у кого то еще варианты и предложения, не стесняйтесь, пишите
карма: 1

0
Ответов: 8926
Рейтинг: 823
#5: 2009-09-27 22:02:28 ЛС | профиль | цитата
-= DriveR =-, не стесняясь: code_15047.txt
карма: 19

0
файлы: 1code_15047.txt [1KB] [162]
Гость
Ответов: 17029
Рейтинг: 0
#6: 2009-09-27 22:47:04 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-02 20:37:00
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#7: 2009-09-27 22:56:06 ЛС | профиль | цитата
Выше-это я.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 817
Рейтинг: 52
#8: 2009-09-28 10:06:11 ЛС | профиль | цитата
MAV, а как определить что достигли конца файла или последней строки.
Вобщем надо остановиться после загрузки последней строки.
Леонид, эта схема еще лучше
bzq-79-181-250-139.red.be писал(а):
Леонид, только в расчете на то, что в третьей колонке ни перед "слово" ни после не попадется случайно набраный пробел

Это верный расчет он действительно нигде больше случайно не встречается.

карма: 1

0
Ответов: 16884
Рейтинг: 1239
#9: 2009-09-28 10:18:33 ЛС | профиль | цитата
-= DriveR =- писал(а):
Это верный расчет он действительно нигде больше случайно не встречается.
Тогда да.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26153
Рейтинг: 2127
#10: 2009-09-28 10:55:19 ЛС | профиль | цитата
Но! Быстродействие этих методов для 100 Mb файла... Даже говорить не о чем. Нужен реалтайм перекодировщик из одного файла в другой. Упор, в данном случае, надо делать на побайтовое чтение-контроль-запись, учитывая специфику задачи.
------------ Дoбавленo в 11.38:
Как-то вот так надо делать перекодировку

-- Схема нерабочая на больших файлах. Удалена --
карма: 22

0
Ответов: 817
Рейтинг: 52
#11: 2009-09-28 12:29:39 ЛС | профиль | цитата
nesco, Очень интрегующе, но у меня почему то на выходе Probe_XXX.txt пустой
Возможно что то не допонимаю в работе схемы
карма: 1

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#12: 2009-09-28 12:31:22 ЛС | профиль | цитата
Гы, гы, гы. Засунь свои данные из начала поста в файл Probe_ZZZ.txt Короче, производится перекодировка файла Probe_ZZZ.txt в файл Probe_XXX.txt
карма: 22

0
Ответов: 817
Рейтинг: 52
#13: 2009-09-28 12:41:09 ЛС | профиль | цитата
nesco писал(а):
Засунь свои данные...

так я и сделал, ща еще раз попробую
----------
Попробовал, эффект тот-же. Создается файлик Probe_XXX.txt пустой
Ща переложу весь проект в корень С: может это поможет
----------
Попробовал переложить - не помогло

карма: 1

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#14: 2009-09-28 12:54:09 ЛС | профиль | цитата
-= DriveR =-, перезалил, я там с условием напортачил. Гы, а ты и не заметил, значит, логику работы не понял
карма: 22

0
Ответов: 817
Рейтинг: 52
#15: 2009-09-28 12:54:18 ЛС | профиль | цитата
Попробовал поставить отладчик - молчит собака

code_15049.txt

------------ Дoбавленo в 12.54:
nesco писал(а):
-= DriveR =-, перезалил, я там с условием напортачил, гы, а ты и не заметил, значит, логику не понял

Не спорю, действительно пока не понял, ща буду усердно разбираться
карма: 1

0
файлы: 1code_15049.txt [1.7KB] [154]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)