Просмотр полной версии : парсер
народ , может у кого-то есть , или кто написать может :
парсер текстовых файлов
есть файл вида <Unnamed>:::mmmmm:
<Unnamed>:::1401288:
<Unnamed>:::general:
<Unnamed>:::dryu:
<Unnamed>:::1513:
надо чтоб парсер убирал последный символ строки . т.е. ':' и :::(три двоеточия) менял на ; (точку с запятой)
Заранее огромное спасибо.
пхп
preg_replace('/[\x3A]+/',';'
Red_Red1
04.11.2007, 00:40
<?
$rez_file = fopen("rez.txt","w");//Создаю файл для результата
$file_array = file ("fil2.txt"); //читаю нужный файл в массив
$count_str = count ($file_array);
for ($i = 0; $i < $count_str; $i++) //читаю массив строк из файла
{
$c=$file_array[$i];
$pattern = "|(.*):::(.*):|is";
if (preg_match_all($pattern, $c, $out)) {
//print_r ($out);
$rez=$out[1][0].';'.$out[2][0].chr(13).chr(10);
fputs ($rez_file,$rez);}// запись в файл
}
fclose ($rez_file);// закрываю файлы
echo "Отработало!!!";
?>
Огромное человеческое спасибо !
++
demonoid
04.11.2007, 11:04
Просто тренировка :)
#!perl
use strict;
use warnings;
my $s ='<Unnamed>:::1513:' =~ /<(.+)>:::(.+):/g;
print "$1;;;$2";
C:\>p.pl
Unnamed;;;1513
Народ , а как дописать , чтоб строки начинающиеся с <Unnamed> удалялись ?
Спасибо .
Red_Red1
05.11.2007, 02:59
<?
$rez_file = fopen("rez.txt","w");//Создаю файл для результата
$file_array = file ("fil2.txt"); //читаю нужный файл в массив
$count_str = count ($file_array);
for ($i = 0; $i < $count_str; $i++) //читаю массив строк из файла
{
$c=$file_array[$i];
$pattern = "|(.*):::(.*):|is";
if (preg_match_all($pattern, $c, $out))
{
if ($out[1][0]!='<Unnamed>')
{
$rez=$out[1][0].';'.$out[2][0].chr(13).chr(10);
fputs ($rez_file,$rez);
}
}
}
fclose ($rez_file);// закрываю файлы
echo "Отработало!!!";
?>
Red_Red1, извращённый код если честно.
<?
$file = 'txt.txt';
$echo = file_get_contents($file);
foreach( file($file) as $in_file )
{
if( preg_match('/^<Unnamed>/', $in_file) )
{
$echo = str_replace( $in_file, NULL, $echo );
}
}
echo( $echo );
?>
Red_Red1
05.11.2007, 13:08
Согласен. Но была заготовка - переделал под просьбу Xszz. Я же только учусь :). Когда писал опирался больше на логику алгоритма.... взять файл, прочитать построкам, найти нужное, поменять и т.д.... Спасибо за критику :) Учту.
Неожидал такой востребованности.... странно плюсики поставили те кто не просил.... интересно, неужели так часто применяются такие скрипты.
astrologer
05.11.2007, 17:52
Можно использовать preg_grep и обойтись без цикла
~Hidrag~
07.11.2007, 00:30
Java :)
package temppack;
import java.io.*;
public class Main {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("inputfile.txt"));
FileOutputStream fos = new FileOutputStream("out.txt");
String l=null;
while ((l=br.readLine())!=null) {
l=l.substring(0,l.length()-1).replaceAll(":::",";");
if (!l.contains("<Unnamed>")) fos.write((l+"\n").getBytes());
}
br.close();
fos.close();
} catch (IOException ex) {
System.err.println("Ошибка нах!");
ex.printStackTrace();
}
}
}
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot