Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 5

txt парсер, как эффективно удалять мусор?

20.03.2013, 17:29. Показов 1312. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть у меня тхт файлы с ненужными мне строками и символами
например : „Ђ.„Ђ88> и ещё подобный мусор , написал простенький парсер который удаляет код вот таким вот примитивным методом :
C++
1
temp->Strings[i]=="8888" || temp->Strings[i]=="МM" || temp->Strings[i]=="3333"  || temp->Strings[i]=="µйЊlп" || temp->Strings[i]=="fЏбўв>q7")
но мусор всё равно остаётся , а если я добавлю больше символов то проц начинает сильно грузиться
а мне нужно удалить всё кроме цифр и знака " = " с маской : 8цифр=8цифр
подскажите какой то хороший метод
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.03.2013, 17:29
Ответы с готовыми решениями:

Парсер txt
Есть куча данных такого типа: <item id="130000" type="Weapon" name="name"> <set name="icon"...

Файл: Какой код в button-е может удалять все строки из *.txt файла?
Какой код в button-е может удалять все строки из *.txt файла? И скопировать туда же все строки с listView1? Точнее какой код и где...

Парсер TXT-файла
Текстовый файл такого вида > E-mail: xteasy@mail.ru Пароль: hanlenro E-mail: saya99@mail.ru Пароль: bloodred E-mail:...

7
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
21.03.2013, 00:15
каждый символ проверяете на то, что он нужная цифра или =. если одно из нужных - оставляете, если нет - удаляете. вместо оставления\удаления лучше конечно в отдельный файл нужное складывать или в память и потом разом слить в файл.
2
 Аватар для t1m0n
638 / 416 / 27
Регистрация: 03.11.2009
Сообщений: 1,855
21.03.2013, 03:03
почитайте про регулярные выражения...
0
 Аватар для GoldenId
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 877
Записей в блоге: 10
21.03.2013, 03:52
Вот-вот-вот, t1m0n, спасибо, за пинок, b1t, я тут смотрю глаза в глаза своему желанию написать FAQ по регулрякам. Точнее сформулируйте, что у Вас является мусором, b1t.
1
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 5
21.03.2013, 13:31  [ТС]
Цитата Сообщение от GoldenId Посмотреть сообщение
Вот-вот-вот, t1m0n, спасибо, за пинок, b1t, я тут смотрю глаза в глаза своему желанию написать FAQ по регулрякам. Точнее сформулируйте, что у Вас является мусором, b1t.
в моём случае мусор это все символы кроме цифр вот такой маски "8цифр=8цифр" как сделать чтоб убирались такие символы и процессор не нагружался сильно я вот понять не могу
0
 Аватар для GoldenId
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 877
Записей в блоге: 10
21.03.2013, 21:52
Щас сделаю

Добавлено через 18 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <string>
#include <iostream>
#include <sstream>
#include <regex>
 
using namespace std;
 
int main()
{
    setlocale( LC_ALL, "Russian" ); // рекомендуемый способ установки русского в косноли
 
    string srctext = 
        "12345678=87654321\n"\
        "1234567=7654321\n"\
        "asdfghjk=87654321\n"\
        "12348765=qweriuyt\n"\
        "12345678 =1234567832165487=78456123";
 
    cout << "Исходный текст:" << endl << srctext << endl;
 
    // шаблон, по которому ищется "немусорная последовательность"
    // самая сложная часть при использовании регулярных выражений
    // в данном случае 8 цифр, равно, 8 цифр
    regex mypattern( "\\d{8}=\\d{8}" ); 
 
    string cleantext;
    stringstream ss;
 
    // цикл прохода по всем последовательностям, соответствующим шаблону
    // здесь нет вызова функци поиска в явном виде, но внутри конструктора
    // sregex_iterator(...) как раз отрабатывает поиск по шаблону
    const sregex_iterator end;
    for( sregex_iterator i( srctext.begin(), srctext.end(), mypattern ); i != end; i++ )
        ss << i->str() << endl;
    cleantext = ss.str();
 
    cout << endl << "Очищенный текст:" << endl << cleantext;
    
    system( "pause" );
}
Это решение через регулярные выражения.

Не по теме:

Таки соберусь и напишу FAQ, вот увидите. >:o

1
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 5
22.03.2013, 10:58  [ТС]
Цитата Сообщение от GoldenId Посмотреть сообщение
Щас сделаю

Добавлено через 18 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <string>
#include <iostream>
#include <sstream>
#include <regex>
 
using namespace std;
 
int main()
{
    setlocale( LC_ALL, "Russian" ); // рекомендуемый способ установки русского в косноли
 
    string srctext = 
        "12345678=87654321\n"\
        "1234567=7654321\n"\
        "asdfghjk=87654321\n"\
        "12348765=qweriuyt\n"\
        "12345678 =1234567832165487=78456123";
 
    cout << "Исходный текст:" << endl << srctext << endl;
 
    // шаблон, по которому ищется "немусорная последовательность"
    // самая сложная часть при использовании регулярных выражений
    // в данном случае 8 цифр, равно, 8 цифр
    regex mypattern( "\\d{8}=\\d{8}" ); 
 
    string cleantext;
    stringstream ss;
 
    // цикл прохода по всем последовательностям, соответствующим шаблону
    // здесь нет вызова функци поиска в явном виде, но внутри конструктора
    // sregex_iterator(...) как раз отрабатывает поиск по шаблону
    const sregex_iterator end;
    for( sregex_iterator i( srctext.begin(), srctext.end(), mypattern ); i != end; i++ )
        ss << i->str() << endl;
    cleantext = ss.str();
 
    cout << endl << "Очищенный текст:" << endl << cleantext;
    
    system( "pause" );
}
Это решение через регулярные выражения.

Не по теме:

Таки соберусь и напишу FAQ, вот увидите. >:o


спасибо работает

Не по теме:

Таки соберусь и напишу FAQ, вот увидите. >:o

хотелось бы почитать
а вот как по точнее маску подобрать всё равно ещё не могу сообразить :-\
0
 Аватар для GoldenId
142 / 143 / 64
Регистрация: 11.11.2010
Сообщений: 877
Записей в блоге: 10
22.03.2013, 19:47
По поводу шаблонов смотрите http://www.cplusplus.com/refer... CMAScript/
Полное описание реализации регулярных выражений на STL http://www.cplusplus.com/reference/regex/

Ну вообще давайте хоть немного.
Для работы с регулярными выражениями по версии STL нужно подключить заголовочный файл
C++
1
#include <regex>
Основные функции

1) regex_match( ... )
используется для определения, подходит ли под шаблон заданная строка целиком. Например
C++
1
2
3
4
  string s ("subject");
  regex e ("(sub)(.*)");
  if (regex_match (s,e))
    cout << "string object matched\n";
2) regex_search( ... )
используется для определения, имеет ли заданная строка хотя бы одно вхождение шаблона. Например
C++
1
2
3
4
  string s ("subject");
  regex e ("(sub)(.*)");
  if (regex_search (s,e))
    cout << "string object matched\n";
Имейте в виду, если Вам нужно пройти по всем вхождениям, соответствующим шаблону, то эта функция Вам не подойдет! Смотрите regex_iterator.

3) regex_replace( ... )
Используется для замены каджого вхождения, соответствующего шаблону на заданную строку. Если быть точным, создается копия исходной строки, в которой каждое вхождение, соответствующее шаблону, заменяется на данную строку. Например
C++
1
2
3
  string s ("there is a subsequence in the string\n");
  regex e ("\\b(sub)([^ ]*)");   
  cout << regex_replace (s,e,"sub-$2");
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2013, 19:47
Помогаю со студенческими работами здесь

парсер txt файла
Уважаемые, помогите. PHP знаю очень плохо, но тем не менее, пытаюсь кое-что написать. Так вот, &quot;дело&quot; остановилось на...

Re: парсер txt файла
Всем добрый день, решил апнуть старую тему, дабы не плодить похожие. Мне тоже надо парить txt, но немного с другой логикой Есть файл...

Парсер txt файла
Есть txt такого формата: #Раздел1 2.21 //атрибуты салата №1 8.08 //атрибуты салата №1 3.72 //атрибуты салата №1 92 //атрибуты...

Парсер txt файла
Нужна помощь.Набросайте кому не сложно парсер txt файла. Нужно парсить указаный txt. Имеются строки вида n:x:z где n,x,z значение...

Парсер txt файла
Добрый вечер, форумчане. Я новичок в C++, прошу помощи. Я хотел сделать полный парсер txt файла. Например:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru