Удаление строк, содержащих диапазон

Grizlok

Новичок
Регистрация
25.12.2017
Сообщения
7
Благодарностей
0
Баллы
1
Подскажите пожалуйста, есть 1000 строк в списке.
В них есть время в unix формате и еще много всяких символов. Мне нужно удалить строки которые содержат определенный диапазон unix кода. Вот он - [1433178915-1496337315]

(?<=,"created":-)14.*?\d\d\d\d\d\d\d\d - вот этой конструкцией, я выделяю дату unix, но как сделать так чтобы удалить строки, которые содержат число из диапазона [1433178915-1496337315]

Про Операции над списками - Удалить строки понимаю. Но как правильно задать регулярное выражение?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 481
Благодарностей
8 692
Баллы
113
Подскажите пожалуйста, есть 1000 строк в списке.
В них есть время в unix формате и еще много всяких символов. Мне нужно удалить строки которые содержат определенный диапазон unix кода. Вот он - [1433178915-1496337315]

(?<=,"created":-)14.*?\d\d\d\d\d\d\d\d - вот этой конструкцией, я выделяю дату unix, но как сделать так чтобы удалить строки, которые содержат число из диапазона [1433178915-1496337315]

Про Операции над списками - Удалить строки понимаю. Но как правильно задать регулярное выражение?
- инициализируем счетчик строк (0)
- берем строку по счетчику (номеру строки)
- берем unix-число
- проверяем его на принадлежность нужнмоу диапазону
- если принадлежит, то удаляем из спсика строку содержащую взятую строку
- если не принадлежит, то ничего не делаем, приращиваем к счетчику строк 1 и берем след. строку
 
  • Спасибо
Реакции: Dimionix

Grizlok

Новичок
Регистрация
25.12.2017
Сообщения
7
Благодарностей
0
Баллы
1
- инициализируем счетчик строк (0)
- берем строку по счетчику (номеру строки)
- берем unix-число
- проверяем его на принадлежность нужнмоу диапазону
- если принадлежит, то удаляем из спсика строку содержащую взятую строку
- если не принадлежит, то ничего не делаем, приращиваем к счетчику строк 1 и берем след. строку
Смотрите - создал Операцию над списком и чтобы получало одну строку и клало в переменную "foto"
А как мне к значению переменной применить regex, чтобы отфильтровать из значения unix

Пошагово объяснили, но не получается создать такую последовательность.
 

Вложения

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 101
Баллы
113
Кубик "Свой код - C# код"
C#:
IZennoList list = project.Lists["List"]; // список проекта
Regex reg = new Regex(@"(?<=,""created"":)\d{10}");
Match m;
long timestamp;

lock (SyncObjects.ListSyncer) {
    for (int i = 0; i < list.Count; i++) {
        m = reg.Match(list[i]);
        if (m.Success) {
            timestamp = long.Parse(m.Value);
            if (timestamp >= 1433178915 && timestamp <= 1496337315) {
                list.RemoveAt(i); i--;
            }
        }
    }
}
 
Последнее редактирование:

Grizlok

Новичок
Регистрация
25.12.2017
Сообщения
7
Благодарностей
0
Баллы
1
Кубик "Свой код - C# код"
C#:
IZennoList list = project.Lists["List"]; // список проекта
Regex reg = new Regex(@"(?<=,""created"":-)\d{10}");
Match m;
long timestamp;

lock (SyncObjects.ListSyncer) {
    for (int i = 0; i < list.Count; i++) {
        m = reg.Match(list[i]);
        if (m.Success) {
            timestamp = long.Parse(m.Value);
            if (timestamp >= 1433178915 && timestamp <= 1496337315) {
                list.RemoveAt(i); i--;
            }
        }
    }
}
Благодарю за код - пока это совсем непонятно, но у меня почему то не удаляются строки.

Опишу свои действия:
1) Парсинг фото из альбома запросом - https://api.vk.com/method/photos.get?owner_id=-64478747&album_id=247652200&v=V=5.69
2) Произвожу обработку текста "{-Page.Text-}" вставляю туда Regex
Код:
(?<=\{"pid":).*?(?=},)
И потом сохраняю в список
3) Беру ваш код и меняю там только название списка внутри квадратных скобок

П.С. Все проходит успешно, но в списке остаются все строки в итоге.
В чем моя ошибка, подскажите пожалуйста
 

Вложения

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 101
Баллы
113
Благодарю за код - пока это совсем непонятно, но у меня почему то не удаляются строки.
Была ошибка в регулярке из старт-поста из-за того, что она форматнулась в смайлик и я в коде такую и прописал (лишний дефис) :-)
Поправил!
Остальное всё правильно!
 
  • Спасибо
Реакции: Grizlok

ArtDir

Client
Регистрация
03.04.2019
Сообщения
48
Благодарностей
4
Баллы
8
Кубик "Свой код - C# код"
C#:
IZennoList list = project.Lists["List"]; // список проекта
Regex reg = new Regex(@"(?<=,""created"":)\d{10}");
Match m;
long timestamp;

lock (SyncObjects.ListSyncer) {
    for (int i = 0; i < list.Count; i++) {
        m = reg.Match(list[i]);
        if (m.Success) {
            timestamp = long.Parse(m.Value);
            if (timestamp >= 1433178915 && timestamp <= 1496337315) {
                list.RemoveAt(i); i--;
            }
        }
    }
}
Не подскажете, как сделать тоже самое, но с таблицей?

Только чтобы оставить строки где в одной из колонок, есть такой диапазон.

У меня получилось вот что:

C#:
IZennoTable table = project.Tables["all_posts_tabl"]; // таблица проекта
Regex reg = new Regex(@"(?<=,""created"":)\d{10}");
Match m;
long timestamp;

lock (SyncObjects.TableSyncer) {
    for (int i = 0; i < table.RowCount; i++) {
        m = reg.Match(table[i]);
        if (m.Success) {
            timestamp = long.Parse(m.Value);
            if (timestamp >= 1433178915 && timestamp <= 1496337315) {
                table.DeleteRow(i); i--;
            }
        }
    }
}
Но выдает ошибку:

Компиляция кода Ошибка в действии "CS0021" "Cannot apply indexing with [] to an expression of type 'ZennoLab.InterfacesLibrary.ProjectModel.IZennoTable'". [Строка: 36; Cтолбец: 23]
 
Последнее редактирование:

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