ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

12.12.2009, 18:55
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме: 9257858
Репутация:
979
|
|
Хочу удалить строки длина которых меньше 10 строк.
re.sub - замена по рег. выражению.
re.sub('\n.{1,10}\n')',"\n",self.text)
Что не так ?
Последний раз редактировалось rushter; 12.12.2009 в 18:59..
|
|
|

12.12.2009, 19:11
|
|
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
Провел на форуме: 1455812
Репутация:
150
|
|
Так не?
PHP код:
strlen($string) <= 10 ? $string = '' : '' ;
|
|
|

12.12.2009, 19:17
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме: 9257858
Репутация:
979
|
|
Нет.Под строкой тут понимается одна большая строка и в ней подстроки разделенные переводом строки(\n).Ну т.е обычный текстовый файл со строками в нём.
|
|
|

12.12.2009, 19:36
|
|
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
Провел на форуме: 1455812
Репутация:
150
|
|
Нет.Под строкой тут понимается одна большая строка и в ней подстроки разделенные переводом строки(\n).Ну т.е обычный текстовый файл со строками в нём.
Ну так открывай файл через file(); в цикле каждую строку проверяй условием, кот. я привел.
Например:
PHP код:
<?php
$file_arr = file("text.txt");
foreach($file_arr as $line) {
strlen($line) <= 10 ? $line = '' : '' ;
echo $line."<br>";
}
?>
Скрипт выведет текстовый файл исключая сроки меньше или равные 10 симвалам.
в условии можно переделать на проверку условием и записем в файл, тоесть запишется новый файл, где не будет "маленьких" строк.
Возможно есть и более практичный вариант.
PS. Написал на скорую руку, нужно доделать до нормального вывода и вырезания "строки"
Последний раз редактировалось LStr1ke; 12.12.2009 в 19:41..
|
|
|

12.12.2009, 20:27
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме: 9257858
Репутация:
979
|
|
Сообщение от LStr1ke
Ну так открывай файл через file(); в цикле каждую строку проверяй условием, кот. я привел.
Например:
PHP код:
<?php
$file_arr = file("text.txt");
foreach($file_arr as $line) {
strlen($line) <= 10 ? $line = '' : '' ;
echo $line."<br>";
}
?>
Скрипт выведет текстовый файл исключая сроки меньше или равные 10 симвалам.
в условии можно переделать на проверку условием и записем в файл, тоесть запишется новый файл, где не будет "маленьких" строк.
Возможно есть и более практичный вариант.
PS. Написал на скорую руку, нужно доделать до нормального вывода и вырезания "строки"
Твой код очень долго будет обрабатывать текст,регулярка будет работать как минимум в 5 раз быстрее.Разбивать фаил весов 15мб и потом его обходить foreach не есть хорошо.
|
|
|

12.12.2009, 21:01
|
|
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме: 1698585
Репутация:
818
|
|
Вообще с трудом понял суть проблемы, а что если считать файл побайтово в переменную, далее переменную разбить на Строки
$strings = explode("\r\n", $file);
Далее сделать поиск в кадом ключе $strings[0], [1], [2]... искать кол-во символов "\n" если оно меньше 10, то делать unset($strings[$key]);
Потом склеиваем оставшиеся ключи и перезаписываем файл.
Надеюсь правильно понял суть вопроса =)
|
|
|

12.12.2009, 21:11
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме: 9257858
Репутация:
979
|
|
Как раз таки нет 
Что имеем:
Не знаю.
Может быть, это еще хуже.
О чем это вы? встревожился Олег.
Просто я подумала, что лучше, сразу отнять жизнь у зверя или взять его беспомощного, сонного в плен и отнять свободу? Обречь всю жизнь сидеть в тесной клетке.
Ошибаетесь! торжествуя воскликнул Олег.
Если мы лишаем зверей свободы, то очень ненадолго: лишь на столько времени, чтобы успеть перевезти их в заранее намеченные места.
И там сейчас же возвращаем им свободу.
Наша цель акклиматизация и приручение полезных и красивых животных.
Мы развезем их по всем местам, где многие из них давно уже выбиты, а другие никогда не жили, но где подходящие для них условия жизни: климат, ландшафт, корма.
Из поколения в поколение мы будем переделывать их, у мирных зверей будем уничтожать древний страх перед человеком.
Вы только вообразите себе, Зенита, милая, стадо красавцев-оленей, пасущееся где-нибудь на Валдае или в Комарово под самым Ленинградом! Безбоязненно подбегает к вам этакий горный рогач, идет, чтобы вы его угостили из своих рук кусочком сахара, ласково потрепали по холке.
Олег! прервала его Зенита.
Знаете что, Олег? Вы не можете.
это.
ну.
С помощью регулярки нужно удалить эти строки.В конце каждой стоки стоит \n.Поидее в этих строках между \n и \n меньше 10 символов.
re.sub - замена по рег. выражению.
re.sub('\n.{1,10}\n')',"\n",self.text)
Другие виды переноса строки зарание убраны(\r\n).
Последний раз редактировалось rushter; 12.12.2009 в 21:16..
|
|
|

12.12.2009, 21:30
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
чото хитромудрая надуманность какая-то, вот так вот и пох на размеры файла:
PHP код:
<?php
$a = fopen('123.txt','r');
while (!feof($a)) {
$b = trim(fgets($a));
if (strlen($b)>10) echo $b . "<br>";
}
?>
Причем здесь регулярки - искренне не понял. Или залей куда-нибудь пример такого файла
|
|
|

12.12.2009, 21:33
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме: 9257858
Репутация:
979
|
|
При том что в моём коде,в данном месте легче,удобне и быстрее использовать рег.выражение.И не спрашивай почему.
|
|
|

12.12.2009, 21:36
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Бред, имхо
PS: Сорри, но правда бред
ни одна регулярка не будет работать быстрее while и strlen, имхо в квадрате
Тем более с большим файлом
Последний раз редактировалось Pashkela; 12.12.2009 в 21:40..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|