Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2012, 00:30   #1
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию Очистка текстовых файлов от ненужных символов.

Всем привет.
Есть слишком много текстовых файлов (на данный момент около 50 000 штук). Средний размер файла 80-110 Кб.
Задача сводится к тому, что бы из всех этих файлов удалить символы, которые не являются буквами (ну и пробелы оставить, что бы слова сохранились), т.е. просто заменить на пустой символ ''...
Сейчас попытался составить приблизительный словарь подобных символов и методом перебора попытался очистить от этих символов вот те все 50к файлов...и ясное дело появились проблемы:
1) список стоп-символов может пополняться и делать это руками очень уж неудобно...Автоматизировать процесс, но как? Методом перебора проверять все символы в файлах на принадлежность к множеству букв и если это не буква, добавлять данный символ в список стоп символов? Но тут проблема появляется, описанная в пункте 2...скорость...
2) скорость обработки - наверное самая главная проблема...Весь этот процесс - очень-очень медленный для такого объема файлов...Можно ли как-то ускорить этот процесс очистки данных текстовых файлов от стоп-символов?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 14.11.2012, 00:33   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а может проще составить белый список символов?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.11.2012, 00:39   #3
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Я вот думал над подобной идеей и она неплохо решает первую проблему...
Но ведь скорость обработки так и останется слишком медленной...А это основная проблема...
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 14.11.2012, 02:13   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в общем подумал, вроде делает мгновенно, и вроде правильно(так что перепроверьте).
(проверил на файле 830 Кб)
Вложения
Тип файла: zip Новая папка (4).zip (6.3 Кб, 33 просмотров)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.11.2012, 03:52   #5
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Алексей, спасибо за помощь...Вроде то, что и надо...
Проверил для 1000 файлов - "грязное" время обработки (загрузка, сохранение, различная предварительная конвертация и т.п. + сам алгоритм очистки) в моем случае равно 1мин. 10сек. В целом, результат довольно таки приемлем, по сравнению с тем, что получалось у меня...
Конечно теоретически, для 50к файлов - это время увеличится где-то до 1часа, но все таки это намного лучше чем было...
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 14.11.2012, 04:17   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не за что, пока не могу придумать как можно быстрее.
а как грузишь/сохраняешь если не секрет?
Цитата:
Конечно теоретически, для 50к файлов - это время увеличится где-то до 1часа, но все таки это намного лучше чем было...
там в принципе врятли будет быстрее.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.11.2012, 23:14   #7
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Цитата:
а как грузишь/сохраняешь если не секрет?
Как загрузка, так и сохранение идет методами класса TStrings.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 15.11.2012, 00:07   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно попробовать, например с помощью FileStream, целиком читать в буфер, обрабатывать как Пепел предложил в другой буфер и обратно целиком записать в файл тем же FileStream. Думаю выгрыш на многих файлах будет существенным по сравнению с TStrings
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.11.2012, 00:16   #9
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Кстати да, я тоже поначалу думал насчет FileStream, но TStrings уже сам работает через TFileStream...
Выходит, что использование TStrings, что TFileStream дадут один и тот результат...Верно ли?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 15.11.2012, 00:27   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Как минимум не нужно брать строку из стрингса по частям или целиком и обратно помещать, а напрямую с буферами ввода-вывода работать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распознавание последовательности символов по заданных шаблонах в текстовых файлах MicRaiS Общие вопросы C/C++ 1 10.10.2012 17:12
Рассчитать количество текстовых символов в поле МЕМО o600000 Microsoft Office Access 1 07.08.2012 22:07
Очистка файлов по расписанию Anubys PHP 1 31.07.2011 17:59
Расширения ненужных файлов Ozerich Свободное общение 10 29.10.2008 17:12
очистка диска от ненужных файлов }{@TT@BЬ)Ч Софт 4 30.11.2007 05:25