Замена текста в текстовом файле.

Animal

Client
Регистрация
15.06.2016
Сообщения
734
Благодарностей
129
Баллы
43
Со страницы собирается код, из кода фильтруются нужные слова и результат записывается в текстовый файл. Задача: определенные слова нужно заменить и результат записать в текстовый файл.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 551
Баллы
113
Определенные слова должны быть в списке.
Далее кладете файл в переменную {-Variable.code-}, например. Берете из списка первую строку с удалением и Regex'ом (поиск и замена) чекаете её в переменной {-Variable.code-}.
Возвращаемся к шагу "берем первую строку из списка с удалением", до тех пор пока не закончатся строки. А после Данные -> Файлы -> Записать текст
 
  • Спасибо
Реакции: VladZen

Animal

Client
Регистрация
15.06.2016
Сообщения
734
Благодарностей
129
Баллы
43
Определенные слова должны быть в списке.
Вот в том то и дело, что экшн "Данные" результат выводит сразу в список а не в значение какой либо переменной (если выбрать "Все"). Данный функционал экшена задуман разработчиками и в данном случае меня он озадачил. Пришлось сделать по другому, в общих чертах опишу как реализовал замену текста:
  • Преобразовал данные экшеном "Операции над списком" в значения переменной
  • Удалил данные в списке экшеном "Операции над списком"
  • Произвел нужную замену данных в значении переменной
  • Затем результат перевел обратно в список
Все.
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
1. Есть экшен - Прочитать файл. Он возьмёт всё содержимое файла в 1 переменную.
2. Если нужно использовать список, есть экшен - Объеденить элементы списка, который так же складывает все данные списка в одну переменную.
В чем сложность? Я честно говоря до конца не понял что Вы сделали и что из этого получилось.
 

Animal

Client
Регистрация
15.06.2016
Сообщения
734
Благодарностей
129
Баллы
43
ZennoScript, мне нужно было результат парсинга вывести не в список, а в значение какой-либо переменной. Но увы, экшн Данные принудительно переводит результат в список а не в значение переменной (скриншот)

Снимок.PNG


Зачем так было сделано - не пойму. Ведь переводить данные в список или значение переменной, это личное дело каждого.
Ну да ладно, черт с ним, если отправилось в список... так уж и быть. Тогда мне нужно было обработать результаты списка. Но... вот незадача: в экшене по обработке списка, функции Заменить один текст на другой - нету. А не мешало бы добавить (Заменить) В результате чего, мне пришлось добавлять лишних 4 экшена, что бы заменить один текст на другой в одном и том же списке. Вот если была бы функция Заменить, в экшене Операции над списком, тогда мне пришлось делать не 4 экшина, а всего навсего одним.
 
Последнее редактирование:

runlike

Client
Регистрация
22.09.2015
Сообщения
175
Благодарностей
51
Баллы
28
Так а в чем проблема добавить в список и потом объединить список в переменную ?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
спарсь в динамический список а потом кинь весь этот список в переменую
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Screenshot_1.png
 

Animal

Client
Регистрация
15.06.2016
Сообщения
734
Благодарностей
129
Баллы
43
Что бы всем было понятно в чем суть вопроса, приведу пример.
Результаты парсинга сформировались в список:

Код:
Перечень вариантов это: регексп
Перечень вариантов это: регексы
Перечень вариантов это: регеспы
Перечень вариантов это: регулярки
Перечень вариантов это: регулярное выражение
Задача: заменить слова "Перечень вариантов это:" в каждой строке списка, на любые другие. К примеру:

Код:
Регулярные выражения: регексп
Регулярные выражения: регексы
Регулярные выражения: регеспы
Регулярные выражения: регулярки
Регулярные выражения: регулярное выражение
Результат замены текста нужно записать снова в один и тот же список с удалением прежних записей.
У меня получилось решить вопрос 4-мя экшинами. Хотя в идеале, думаю, можно переделать выполнение действия двумя-тремя экшинами.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
C#:
var list = project.List["ResultList"]; // Список с результатами
Tab tab = instance.ActiveTab;
// Ожидание загрузки страницы
if (tab.IsBusy) tab.WaitDownloading();
// Получаем DOM страницы
string text = tab.DomText;
Regex reg = new Regex(@"Регулярка");
// Поиск всех совпадений
MatchCollection matchCol = reg.Matches(text);
for (int i = 0; i < matchCol.Count; i++)
{
    // Проверяем, успешно ли совпадение
    if (matchCol[i].Success)
        // Если успешно, добавляем результат парсинга в список (с заменой)
        list.Add(matchCol[i].Value.Replace("Что заменить", "На что заменить"));
}
 

Animal

Client
Регистрация
15.06.2016
Сообщения
734
Благодарностей
129
Баллы
43
Уже почти готовый парсер. Только одна проблема - не корректно берется ссылка на фото с расширением gif. Подскажите, как эффективно брать адрес ссылки на фото с расширением gif? (посты в ОК)
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 641
Баллы
113
Уже почти готовый парсер. Только одна проблема - не корректно берется ссылка на фото с расширением gif. Подскажите, как эффективно брать адрес ссылки на фото с расширением gif? (посты в ОК)
экстрасенсов тут мало. Сложно догадаться в чём именно у тебя проблема и тем более, как её решить
 

Animal

Client
Регистрация
15.06.2016
Сообщения
734
Благодарностей
129
Баллы
43
экстрасенсов тут мало. Сложно догадаться в чём именно у тебя проблема и тем более, как её решить
Я не думаю, что человек который не делал парсера постов соц. сети ОК, сможет мне вообще помочь в данном вопросе. А разжевывать вопрос профессионалам в деталях - не корректно. Суть вопроса кратко была изложена, кто в теме - без напряга поймет о чем речь. Будьте добры, не отнимайте у меня и себя время пустой болтовней если не знаете как решить вопрос.
 

Animal

Client
Регистрация
15.06.2016
Сообщения
734
Благодарностей
129
Баллы
43
Ну что же... парсер постов для соц.сети ОК готов. Оптимизоровал, доработал функционал в целом. На одну страницу припадает 9 постов. Максимально удается спарсить примерно 1600-1700 постов (разница между погрешностью зависит от группы). После этого количества спарсеных постов, функция "Показать еще" исчезает. Таким образом, 1600-1700 постов - это потолок. Данное ограничение не касается ПУ администратора группы, но это уже другой парсер и то, только для своих групп а не для чужих)
Надеюсь, эти данные помогут другим новичкам при построении парсера постов ОК. Кстати, посты с пометкой "промо" не парсятся. Наверное у них другое значения кода поста, но это только в плюс при парсинге постов)
К сожалению... проблему с gif фото так и не решил. Наверное придется из некорректного значения формировать корректное, но это как минимум 4 экшена и выше, трындец...
 

Vitaliy1987

Client
Регистрация
06.11.2022
Сообщения
3
Благодарностей
0
Баллы
1
C#:
var list = project.List["ResultList"]; // Список с результатами
Tab tab = instance.ActiveTab;
// Ожидание загрузки страницы
if (tab.IsBusy) tab.WaitDownloading();
// Получаем DOM страницы
string text = tab.DomText;
Regex reg = new Regex(@"Регулярка");
// Поиск всех совпадений
MatchCollection matchCol = reg.Matches(text);
for (int i = 0; i < matchCol.Count; i++)
{
    // Проверяем, успешно ли совпадение
    if (matchCol[i].Success)
        // Если успешно, добавляем результат парсинга в список (с заменой)
        list.Add(matchCol[i].Value.Replace("Что заменить", "На что заменить"));
}
Может кому то будет полезно, в этом скрипте в 1 строке
"var list = project.List["ResultList"]" - Ошибка.
"var list = project.Lists["ResultList"]" - нужно так.
Я 2 дня не мог понять чего оно не работает ))
 
Последнее редактирование:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)