Бесплатные снипеты на заказ

WEISS

Client
Joined
Dec 11, 2015
Messages
115
Reaction score
25
Points
28
вместо
Code:
Replace(",first_name:", "|")
так
Code:
Replace(",first_name:", "")
Нет, надо так Replace(""", "") а не хочет, ругается
 

Valiksim

Client
Joined
Apr 14, 2012
Messages
1,344
Reaction score
298
Points
83
Нет, надо так Replace(""", "") а не хочет, ругается
Экранировать надо спецсимволы
 

WEISS

Client
Joined
Dec 11, 2015
Messages
115
Reaction score
25
Points
28

Valiksim

Client
Joined
Apr 14, 2012
Messages
1,344
Reaction score
298
Points
83
" - экранируется "" через себя же
 

WEISS

Client
Joined
Dec 11, 2015
Messages
115
Reaction score
25
Points
28

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
.Replace("\"", "")
это если ковычку хочешь заменить на пустоту
 
  • Thank you
Reactions: WEISS

WEISS

Client
Joined
Dec 11, 2015
Messages
115
Reaction score
25
Points
28
.Replace("\"", "")
это если ковычку хочешь заменить на пустоту
Спасибо, и ещё вопрос
в версии 5.10 всё после замены пишет в список через запятую вот этот код
Code:
 Macros.TextProcessing.ToList(str, @",", "Text", project, project.Lists["all"]);
а в версии 5.9 ругается, подскажите плиз.
 

evgen2208

Client
Joined
Oct 12, 2016
Messages
130
Reaction score
163
Points
43
Уважаемые знатоки, Нужен сниппет для выполнения следующей задачи: "почистить неполные дубли текста".

Имеется список строк (выдача гугла и яндекса) около 27МБ текста. В этом тексте куча повторений, но они не 100% дубли.

Примеры строк звездочкой пометил те самые дубли:

Выполнена транспортировка негабаритного крана РДК-250 из Новгородской обл. в Коломну на трале типа "корыто".
*Выполнение перевозок строительной техники, производственного оборудования и негабаритных грузов в Екатеринбурге
*Выполнение перевозок строительной техники, производственного оборудования и негабаритных грузов в Екатеринбурге, Свердловской области и
*Выполнение перевозок строительной техники, производственного оборудования и негабаритных грузов в Екатеринбурге, Свердловской области и России.
*Выполнение перевозок строительной техники, производственного оборудования и негабаритных грузов в Коротчаево, ХМАО, ЯНАО и России.
Выполнение поручений диспетчера и руководителей строительных объектов по доставке крупногабаритных грузов и техники.
Выполнение работ по перевозке автотранспортных средств и негабаритных грузов автомобильным транспортом включает в себя: -погрузку

**Выполням профессионально и в срок: Перевозка негабаритных и тяжеловесных грузов Компания Разрушим.Ру - работаем в Ростове-на-Дону и РО,
**Выполням профессионально и в срок: Перевозка негабаритных и тяжеловесных грузов Компания Разрушим.Ру - работаем в Ростове-на-Дону и РО, а также по всему ЮФО.
Выполням профессионально и в срок: Перевозка негабаритных и или специфических особенностей нельзя перевозить в закрытом дорожном то спецтехника или

***Высококлассные опытные водители компании Т.К. АВТО ПЛЮС перевозили негабаритные грузы в Санкт-Петербург и Сочи
***Высококлассные опытные водители компании Т.К. АВТО ПЛЮС перевозили негабаритные грузы в Санкт-Петербург и Сочи, Красноярск и
***Высококлассные опытные водители компании Т.К. АВТО ПЛЮС перевозили негабаритные грузы в Санкт-Петербург и Сочи, Красноярск и Нижний Тагил, в Москву и
Раньше работало так:
Было всего 200 строк в тексте (Каждый раз парсилась выдача)

1. регуляркой (\w+\W){6} выбираю ВСЕ словосочетания больше 6 слов - в список1
2. Удаляю дубли с списке1
3. Беру строку1 из списка1 (+Escape) и делаю в исходном тексте поиск-замена .*{строка1}.*
номера совпадений 1-end
повторяю пока не кончатся строки в списке1.

Проблема возникла, когда захотел использовать накопленный текст (там около 27 мб), и таких полу-дублей в нем больше 6 тысяч.
Пока ни разу не хватило терпения дождаться выполнения проекта.
(и хотелось бы чистить номера совпадений от 0 до предпоследнего)
 
Last edited:

sipoku

Client
Joined
Apr 4, 2010
Messages
266
Reaction score
138
Points
43
Друзья, помогите разобраться в коде, который тут нашел. И, может, подредактировать под мои цели. Вот код:

Code:
string input = project.Variables["content2"].Value; // Исходный текст
var list = project.Lists["temp"]; // Список выходных строк
list.Clear(); // Очищаем список
int count = 10; // Количество строк
for (int i = 0; i < count; i++)
{
    string pattern = @"^.{0,2800}(\.|\?|\!|\s)"; // где 2800 - максимальная длина выходных строк (в символах)
    Match match = Regex.Match(input, pattern);
    if (match.Success)
    {
        list.Add(match.Value.Trim());
        input = input.Remove(0, match.Length);
    }
}
project.Variables["content2"].Value = input;
На входе берется переменная с текстом внутри (большой объем). На выходе в списке 10 строк с порезанным на блоки контентом. И вот я думал здесь "0,2800" можно задать желаемый объем каждого блока в символах. А они получаются ну очень разными. Нельзя ли как-то задать минимальный и максимальный объем в символах?

На данный момент при каждом запуске разные блоки:
1_блок - 197симв, 2_блок - 475симв, 3_блок - 433симв, 4_блок - 199симв, 5_блок - 482симв, 6_блок - 201симв.
1_блок - 213симв, 2_блок - 453симв, 3_блок - 223симв, 4_блок - 412симв, 5_блок - 410симв, 6_блок - 287симв.

И все далеки от заданных 2800 символов.

Не помню кто автор этого кода, но большое ему спасибо! И заранее спасибо тому, кто поможет сделать результаты его работы более управляемыми.
 

Skrim

Client
Joined
Mar 23, 2016
Messages
125
Reaction score
86
Points
28
На входе берется переменная с текстом внутри (большой объем). На выходе в списке 10 строк с порезанным на блоки контентом.
Что представляет из себя текст и как нужно разбивать на список? По предложениям или каждый блок заканчивается каким-то символом?
 

Valiksim

Client
Joined
Apr 14, 2012
Messages
1,344
Reaction score
298
Points
83
Что представляет из себя текст и как нужно разбивать на список? По предложениям или каждый блок заканчивается каким-то символом?
Не знаю, что спросившему надо, но, обычно такое делится либо на слово, либо на один из знаков препинания - . или , или ! или ?
 

kopc

Client
Joined
Nov 24, 2011
Messages
151
Reaction score
57
Points
28
Народ, а есть у кого-нить снипет для работы с БД mysql?

Собственно задача. Есть список. В списке 2-3 тысячи строк. Нужно пройтись по всему списку и обновить значения в БД.
Строки типа
название@число
название2@число2
название3@число3

Запрос к БД типа
UPDATE `Swap_site` SET `price`= число WHERE `name` = название

Сейчас реализованно стандартными средствами зенки. Типа беру зарании подготовленную строку UPDATE из списка и делаю запрос к базе, но все это занимает много времени. На весь список уходит пару минут, что для меня очень долго.

Может есть возможность это снипетом реализовать?
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
Народ, а есть у кого-нить снипет для работы с БД mysql?

Собственно задача. Есть список. В списке 2-3 тысячи строк. Нужно пройтись по всему списку и обновить значения в БД.
Строки типа
название@число
название2@число2
название3@число3

Запрос к БД типа
UPDATE `Swap_site` SET `price`= число WHERE `name` = название

Сейчас реализованно стандартными средствами зенки. Типа беру зарании подготовленную строку UPDATE из списка и делаю запрос к базе, но все это занимает много времени. На весь список уходит пару минут, что для меня очень долго.

Может есть возможность это снипетом реализовать?
отключи прорисовку действий в пм и всё отработает быстро
 

kopc

Client
Joined
Nov 24, 2011
Messages
151
Reaction score
57
Points
28
отключи прорисовку действий в пм и всё отработает быстро
не помогает. Даже в самом ZP это занимает минуты 1,5-2. А это очень долго для моих целей
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
Попробуй сначала сгенерировать один запрос к бд сразу на все данные и его уже выполнить, а не по одному запросу на 1 слово
 

kopc

Client
Joined
Nov 24, 2011
Messages
151
Reaction score
57
Points
28
Попробуй сначала сгенерировать один запрос к бд сразу на все данные и его уже выполнить, а не по одному запросу на 1 слово
Хм. Может я что-то не верно понял, но разве я могу генерить 1 запрос на изменение данных, если у меня все цены и названия разные?
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
Хм. Может я что-то не верно понял, но разве я могу генерить 1 запрос на изменение данных, если у меня все цены и названия разные?
да, ты прав. Я сглупил. Я стандартные методы позволяют выполнить сразу несколько запросов?
 

kopc

Client
Joined
Nov 24, 2011
Messages
151
Reaction score
57
Points
28
да, ты прав. Я сглупил. Я стандартные методы позволяют выполнить сразу несколько запросов?
Вроде как нет. Если только попробовать сразу несколько строк UPDETE засовывать в один кубик. И то не факт, что это нормально работать будет. Вообще иногда кажется, что кубики работы со списками работают медленней, чем то же самое, но в снипете. Особенно при большом количестве строк
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
Вроде как нет. Если только попробовать сразу несколько строк UPDETE засовывать в один кубик. И то не факт, что это нормально работать будет. Вообще иногда кажется, что кубики работы со списками работают медленней, чем то же самое, но в снипете. Особенно при большом количестве строк
ну попробуй несколько апдейтов прописать. Если сработают - тогда попробуй сформировать сразу все апдейты и выполнить их за раз
 

kopc

Client
Joined
Nov 24, 2011
Messages
151
Reaction score
57
Points
28
попробуй сформировать сразу все апдейты и выполнить их за раз
Пробовал. Сама база тупить начинает. Похоже захлебывается в запросах, если к ней сразу таким образом ломануться
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
Пробовал. Сама база тупить начинает. Похоже захлебывается в запросах, если к ней сразу таким образом ломануться
Это чертовски странно.
 

kopc

Client
Joined
Nov 24, 2011
Messages
151
Reaction score
57
Points
28
Это чертовски странно.
Ну не особо в целом то. У меня 6 сайтов с которых идет парсинг, на каждый сайт по шабу, с шаба каждого по такому файлу, парсинг нонстопом. База просто база. В целом то когда в нее по 3к запросов с 6 шабов залетает она себя не особо хорошо чувствует
 

kopc

Client
Joined
Nov 24, 2011
Messages
151
Reaction score
57
Points
28
Хм. Покопался на форуме и нашел в этой теме код подключения к БД и выборки от туда по параметру. Собственно говоря понял как в коде отдаются команды БД.
Может кто помочь код подправить под мои нужны? Нужно чтобы брал первую строку из списка, удалял ее и подставлял эту строку в качестве команды БД. И все это пока строки в списке не кончатся

Code:
// результат выполнения
string result = String.Empty;
// команда для MySql
var command = new MySql.Data.MySqlClient.MySqlCommand();
// строка подключения
string connectionString = "Data source=localhost;UserId=user;Password=qwerty;database=MyDatabaseName;";
// текст команды (Ну то есть забрать всё из Data)
command.CommandText = "SELECT * FROM Data;";
// пытаемся подключиться
try
{
    // создаём подключение
    command.Connection = new MySql.Data.MySqlClient.MySqlConnection(connectionString);
}
catch(Exception e)
{
    // не получилось
    result = "MySql connect failed";
}
// подключение не возможно -> выходим
if (result != String.Empty) return result;
// ловим исключение
try
{
    // откроем соединение
    command.Connection.Open();
    // выполним команду
    var reader = command.ExecuteReader();
    // запишим данные сюда
    StringBuilder sb = new StringBuilder();
    int i = 0;
    // до тех пор пока есть что читать
    while (reader.Read())
    {
        i++;
        // пусть в таблице 3 записи id|firstname|lastname
        sb.AppendLine(String.Format("№{0}: id = {1} | first name = {2} | last name = {3}", i,
                                    reader["id"], reader["firstname"], reader["lastname"]));
    }
    // это и вернём
    result = sb.ToString();
    // закроем
    reader.Close();
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
    // словили
    result = String.Format("MySql reader exception: {0}", e.Message);
}
finally
{
    // что бы не произошло закроем соединение
    command.Connection.Close();
}
// вернём результат
return result;
 

sipoku

Client
Joined
Apr 4, 2010
Messages
266
Reaction score
138
Points
43
Что представляет из себя текст и как нужно разбивать на список? По предложениям или каждый блок заканчивается каким-то символом?
Во вложении рабочий пример файла с текстом. Разбивать пытаюсь по предложениям, чтобы законченные знаком препинания блоки текста получались. С этим проблемы нет, режет на предложения. А вот объем текста в блоках в жесткие рамки никак не вставляется. Хотелось бы, к примеру, каждый блок иметь от 300 до 1000 символов.
 

Attachments

Skrim

Client
Joined
Mar 23, 2016
Messages
125
Reaction score
86
Points
28
Во вложении рабочий пример файла с текстом. Разбивать пытаюсь по предложениям, чтобы законченные знаком препинания блоки текста получались. С этим проблемы нет, режет на предложения. А вот объем текста в блоках в жесткие рамки никак не вставляется. Хотелось бы, к примеру, каждый блок иметь от 300 до 1000 символов.
C#:
string pattern = @"^.{0,2800}(\.|\?|\!|\s)"; // где 2800 - максимальная длина выходных строк (в символах)
В этой строчке {0,2800} как раз и задает интервалы. Укажите {300,1000}
Если нужно разбить на предложения по одному, замените на эту строку:
C#:
string pattern = @"^[\s\S]*?[\.|!|\?]"; // получает первое предложение, заканчивающееся ".","!","?"
 

mrfeathers

Новичок
Joined
Nov 7, 2015
Messages
14
Reaction score
0
Points
1
Нужна помощь с написании снипета по подключению к серваку по SSH (логин, пасс, ip, команда - переменные) выполнении команды и отключению.
Есть желающие помочь?
 

sipoku

Client
Joined
Apr 4, 2010
Messages
266
Reaction score
138
Points
43
C#:
string pattern = @"^.{0,2800}(\.|\?|\!|\s)"; // где 2800 - максимальная длина выходных строк (в символах)
В этой строчке {0,2800} как раз и задает интервалы. Укажите {300,1000}
Если нужно разбить на предложения по одному, замените на эту строку:
C#:
string pattern = @"^[\s\S]*?[\.|!|\?]"; // получает первое предложение, заканчивающееся ".","!","?"
С этого я и начинал. Логично было бы там задавать диапазон. Но, как только я ставлю там в первой части что-либо больше 200 (т.е. {200,2800}), получаю в результате работы этого блока пустой список. Никаких ошибок не выдает, но список, где должны быть блоки текста ПУСТОЙ.
Может это быть из-за того, что в строчках контента не хватает символов? К примеру я задаю {500,800}, а в исходнике нет (или есть, но недостаточно) строк, длиной от 500 символов.
 

Valiksim

Client
Joined
Apr 14, 2012
Messages
1,344
Reaction score
298
Points
83
Может это быть из-за того, что в строчках контента не хватает символов? К примеру я задаю {500,800}, а в исходнике нет (или есть, но недостаточно) строк, длиной от 500 символов.
Скорее всего. Начни тестить иначе. Задавай параметры от большого к малому, например {2500,2800}, потом {2200,2800}, {2000,2800} и так, на уменьшение. Тогда быстрее поймёшь, что к чему
 
Joined
Jul 8, 2015
Messages
2,848
Reaction score
712
Points
113

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
нет эту тему валим
 

Users Who Are Viewing This Thread (Total: 27, Members: 0, Guests: 27)