HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #871  
Старый 12.12.2009, 18:55
rushter
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме:
9257858

Репутация: 979


Отправить сообщение для rushter с помощью ICQ
По умолчанию

Хочу удалить строки длина которых меньше 10 строк.
re.sub - замена по рег. выражению.
re.sub('\n.{1,10}\n')',"\n",self.text)
Что не так ?
__________________
Blog

Последний раз редактировалось rushter; 12.12.2009 в 18:59..
 
Ответить с цитированием

  #872  
Старый 12.12.2009, 19:11
LStr1ke
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
Провел на форуме:
1455812

Репутация: 150
По умолчанию

Так не?
PHP код:
strlen($string) <= 10 $string '' '' 
 
Ответить с цитированием

  #873  
Старый 12.12.2009, 19:17
rushter
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме:
9257858

Репутация: 979


Отправить сообщение для rushter с помощью ICQ
По умолчанию

Нет.Под строкой тут понимается одна большая строка и в ней подстроки разделенные переводом строки(\n).Ну т.е обычный текстовый файл со строками в нём.
__________________
Blog
 
Ответить с цитированием

  #874  
Старый 12.12.2009, 19:36
LStr1ke
Постоянный
Регистрация: 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..
 
Ответить с цитированием

  #875  
Старый 12.12.2009, 20:27
rushter
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме:
9257858

Репутация: 979


Отправить сообщение для rushter с помощью ICQ
По умолчанию

Цитата:
Сообщение от 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 не есть хорошо.
__________________
Blog
 
Ответить с цитированием

  #876  
Старый 12.12.2009, 21:01
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

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

Надеюсь правильно понял суть вопроса =)
 
Ответить с цитированием

  #877  
Старый 12.12.2009, 21:11
rushter
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме:
9257858

Репутация: 979


Отправить сообщение для rushter с помощью ICQ
По умолчанию

Как раз таки нет
Что имеем:
Цитата:
Не знаю.
Может быть, это еще хуже.
О чем это вы? встревожился Олег.
Просто я подумала, что лучше, сразу отнять жизнь у зверя или взять его беспомощного, сонного в плен и отнять свободу? Обречь всю жизнь сидеть в тесной клетке.
Ошибаетесь! торжествуя воскликнул Олег.
Если мы лишаем зверей свободы, то очень ненадолго: лишь на столько времени, чтобы успеть перевезти их в заранее намеченные места.
И там сейчас же возвращаем им свободу.
Наша цель акклиматизация и приручение полезных и красивых животных.
Мы развезем их по всем местам, где многие из них давно уже выбиты, а другие никогда не жили, но где подходящие для них условия жизни: климат, ландшафт, корма.
Из поколения в поколение мы будем переделывать их, у мирных зверей будем уничтожать древний страх перед человеком.
Вы только вообразите себе, Зенита, милая, стадо красавцев-оленей, пасущееся где-нибудь на Валдае или в Комарово под самым Ленинградом! Безбоязненно подбегает к вам этакий горный рогач, идет, чтобы вы его угостили из своих рук кусочком сахара, ласково потрепали по холке.
Олег! прервала его Зенита.
Знаете что, Олег? Вы не можете.
это.
ну.
С помощью регулярки нужно удалить эти строки.В конце каждой стоки стоит \n.Поидее в этих строках между \n и \n меньше 10 символов.
Цитата:
re.sub - замена по рег. выражению.
re.sub('\n.{1,10}\n')',"\n",self.text)
Другие виды переноса строки зарание убраны(\r\n).
__________________
Blog

Последний раз редактировалось rushter; 12.12.2009 в 21:16..
 
Ответить с цитированием

  #878  
Старый 12.12.2009, 21:30
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

чото хитромудрая надуманность какая-то, вот так вот и пох на размеры файла:

PHP код:
<?php
$a 
fopen('123.txt','r');
while (!
feof($a)) {
   
$b trim(fgets($a));
   if (
strlen($b)>10) echo $b "<br>";
}
?>
Причем здесь регулярки - искренне не понял. Или залей куда-нибудь пример такого файла
 
Ответить с цитированием

  #879  
Старый 12.12.2009, 21:33
rushter
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме:
9257858

Репутация: 979


Отправить сообщение для rushter с помощью ICQ
По умолчанию

При том что в моём коде,в данном месте легче,удобне и быстрее использовать рег.выражение.И не спрашивай почему.
__________________
Blog
 
Ответить с цитированием

  #880  
Старый 12.12.2009, 21:36
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Бред, имхо

PS: Сорри, но правда бред

ни одна регулярка не будет работать быстрее while и strlen, имхо в квадрате

Тем более с большим файлом

Последний раз редактировалось Pashkela; 12.12.2009 в 21:40..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi]/[Pascal] Задай вопрос, получи ответ Isis С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 6762 17.06.2010 21:23



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ