|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.11.2012, 00:30 | #1 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Очистка текстовых файлов от ненужных символов.
Всем привет.
Есть слишком много текстовых файлов (на данный момент около 50 000 штук). Средний размер файла 80-110 Кб. Задача сводится к тому, что бы из всех этих файлов удалить символы, которые не являются буквами (ну и пробелы оставить, что бы слова сохранились), т.е. просто заменить на пустой символ ''... Сейчас попытался составить приблизительный словарь подобных символов и методом перебора попытался очистить от этих символов вот те все 50к файлов...и ясное дело появились проблемы: 1) список стоп-символов может пополняться и делать это руками очень уж неудобно...Автоматизировать процесс, но как? Методом перебора проверять все символы в файлах на принадлежность к множеству букв и если это не буква, добавлять данный символ в список стоп символов? Но тут проблема появляется, описанная в пункте 2...скорость... 2) скорость обработки - наверное самая главная проблема...Весь этот процесс - очень-очень медленный для такого объема файлов...Можно ли как-то ускорить этот процесс очистки данных текстовых файлов от стоп-символов?
Будь проще и люди к тебе потянутся
|
14.11.2012, 00:33 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а может проще составить белый список символов?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
14.11.2012, 00:39 | #3 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Я вот думал над подобной идеей и она неплохо решает первую проблему...
Но ведь скорость обработки так и останется слишком медленной...А это основная проблема...
Будь проще и люди к тебе потянутся
|
14.11.2012, 02:13 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
в общем подумал, вроде делает мгновенно, и вроде правильно(так что перепроверьте).
(проверил на файле 830 Кб) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
14.11.2012, 03:52 | #5 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Алексей, спасибо за помощь...Вроде то, что и надо...
Проверил для 1000 файлов - "грязное" время обработки (загрузка, сохранение, различная предварительная конвертация и т.п. + сам алгоритм очистки) в моем случае равно 1мин. 10сек. В целом, результат довольно таки приемлем, по сравнению с тем, что получалось у меня... Конечно теоретически, для 50к файлов - это время увеличится где-то до 1часа, но все таки это намного лучше чем было...
Будь проще и люди к тебе потянутся
|
14.11.2012, 04:17 | #6 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
не за что, пока не могу придумать как можно быстрее.
а как грузишь/сохраняешь если не секрет? Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
14.11.2012, 23:14 | #7 | |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Цитата:
Будь проще и люди к тебе потянутся
|
|
15.11.2012, 00:07 | #8 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Можно попробовать, например с помощью FileStream, целиком читать в буфер, обрабатывать как Пепел предложил в другой буфер и обратно целиком записать в файл тем же FileStream. Думаю выгрыш на многих файлах будет существенным по сравнению с TStrings
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
15.11.2012, 00:16 | #9 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Кстати да, я тоже поначалу думал насчет FileStream, но TStrings уже сам работает через TFileStream...
Выходит, что использование TStrings, что TFileStream дадут один и тот результат...Верно ли?
Будь проще и люди к тебе потянутся
|
15.11.2012, 00:27 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Как минимум не нужно брать строку из стрингса по частям или целиком и обратно помещать, а напрямую с буферами ввода-вывода работать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Распознавание последовательности символов по заданных шаблонах в текстовых файлах | 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 |