Sziasztok!
Az alábbi szerkezetű földhivatali adatszolgáltatásból kéne valami használható dolgot létrehoznom, ami eredetileg egy txt fájl, így néz ki:
http://pastebin.com/xsf6MP5f
Az eredmény egy csv lenne, kb így:
1/, kivett, beépítetlen terület, 0.1530, ., 1/2, Gipsz Jakabné, Minta Ilona, 1943, Próba Ildikó, 1111, Minta, Minta Ferenc utca 1;
1/, kivett, beépítetlen terület, 0.1530, ., 1/2, Gipsz Jakab,'null' ,1969, Minta Ilona, 1111, Minta, Minta Ferenc utca 1;
Mi lenne erre a legjobb?
Perl-re hajlanék, vagy esetleg Pyton? Awk? Awk elvileg ilyen dologra van kitalálva. 1x, najó, talán 3x lenne lefuttatva, ha tökéletes a szkript, futási idő lényegtelen
- 2988 megtekintés
Hozzászólások
Hány ilyet kell feldolgozni egy futtatás során?
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
3 fájlban van amit fel kell dolgozni, amit 1/ -el jelöltem, abból a 1/-665/ a legnagyobb, de az eredmény csv sorai változók (attól függően, hogy hány Gipsz Jakabné...stb. van)
Mint írtam, futási idő nem számít. A pastebin-es kódban ami van, az gyakorlatilag egy rekord lenne. Pontosabban Gipsz Jakabné egy rekord, Gipsz Jakab még egy rekord, Gipsz Jakabné még egy rekord. Minél kevesebb utánolvasással kellene lekódolnom, ez lenne a kérdés.
- A hozzászóláshoz be kell jelentkezni
Excel. De ha perl-ben büfé vagy, az még jobb.
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
awk vagy perl szerintem amit én első körben megpróbálnék ilyen jellegű adatnál.
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
Köszi, én is csak azért írtam a python-t, mert benne volt a kategória nevében. Perl vagy awk? Perl -ahogy láttam- népszerűbb, tehát nagyobb eséllyel találok rá tutorial-t, how-to-t. Awk-t meg direkt szövegfeldolgozásra fejlesztették, ahogy írják. Kb. 0-ról indulok, perl-ben már írtam olyan szkriptet, ami működött(webről fájlok letöltése, csoportos konvertálása pdf-be, elnevezése).
- A hozzászóláshoz be kell jelentkezni
Ha már dolgoztál perl-ben, akkor inkább azt javasolnám - könnyebb egy ismert nyelvvel dolgozni, mint megtanulni egy újat (főleg, hogy awk-nak inkább C-s nyelvezete van). Ha nagyon fapadosra akarod venni, akkor minden adatodat külön változóba pakold bele (valamilyen mintaillesztés (regexp) alapján), aztán a végén simán írasd ki a változóidat egy sorba a te általad preferált formázással.
Egyedül arra kell majd figyelj, hogy ha az adatforrásaid különböző file-okból kerülnek ki - ebben az esetben némi kis tömbkezelést is bele kell majd vigyél a dologba 1-2 ciklussal megspékelve.
De amúgy ha a sebesség nem számít, akkor akár sima bash scriptet is írhatsz rá lényegében ciklusokkal és greppel összerakva ahogy látom.
____________________________________
Az embert 2 éven át arra tanítják hogyan álljon meg a 2 lábán, és hogyan beszéljen... Aztán azt mondják neki: -"Ülj le és kuss legyen!"..
- A hozzászóláshoz be kell jelentkezni
Részvétem, majdcsak mindegy miben írsz sok *-ot és ?-et. ;)
Végignézted a txt-t ami nekem rémlik ott még rapszodikusabb (nem minden rekord ugyanolyan formátumú)
- A hozzászóláshoz be kell jelentkezni
Ez azért egy elég standard CSV-nek néz ki. Én körülnéznék milyen CSV parser kész megoldások vannak. Én pár éve PHP alatt biztos használtam ilyet. És onnan adatbázis/keresés gyorsan megy, mint egy awk-al...
- A hozzászóláshoz be kell jelentkezni
valamit te félreértelmezel... de nagyon...
- A hozzászóláshoz be kell jelentkezni
A másik irány kell neki :-P
- A hozzászóláshoz be kell jelentkezni
PHP - teljesen jól megfelel a célnak.
mondjuk a legtöbben szerintem félreértik kicsit a feladatot...
A csv a cél.. nem a forrás.
Kicsit több minta kell ahhoz, hogy az ember stabil parsert irjon a paste-bin-en szereplő file tipushoz, de nem tűnik nehéznek.
Ellenben ugye változatos annak fügvényében hogy pl. hány tulajdonos van. Szóval azért kell minta bőven.
### ()__))____________)~~~ ########################
# "Do what you want, but do it right" # X220/Arch
- A hozzászóláshoz be kell jelentkezni
Akkor már inkább perl vagy python.
- A hozzászóláshoz be kell jelentkezni
Izlés dolga :)
Avagy esetleg van valamilyen konkrét ok, hogy miért?
### ()__))____________)~~~ ########################
# "Do what you want, but do it right" # X220/Arch
- A hozzászóláshoz be kell jelentkezni
Mert nem lehet benne így tákolni. :P
$p=file_get_contents("foldkonyv.txt");
preg_match_all("/\r\n([0-9 ]{8}\/.*?)\r\n(.*?)([0-9].*?) .*?\r\n(.*?)_.*?Cím:(.*?)\r\n.*? Tulajdonosi adatok(.*?)[_|\*]/s",$p,$r);
$h=array();
foreach ($r[1] as $i=>$v)
{
preg_match_all("/(.*?)\r\n {3}\r\n/s",$r[6][$i],$q);
if (isset($q[0][0])) $k=$q[0][0]; else $k=$r[5][$i];
$k=str_replace("\r\n "," ",$k);
preg_match_all("/(.*?):(.*?)\n/s",$k,$q);
$h=array();
$h["hrsz"]=trim($v);
$h["kivett"]=trim($r[2][$i]);
$h["terulet"]=trim($r[3][$i]);
$h["megnevezes"]=trim($r[4][$i]);
$h["cim"]=trim($r[5][$i]);
$res=$h;
foreach ($q[1] as $j=>$a)
{
if (isset($res[trim($a)])) { $resu[]=$res; $res=$h; };
$res[trim($a)]=trim($q[2][$j]);
};
};
print_r($resu);
- A hozzászóláshoz be kell jelentkezni
Erre szerintem barmelyik szkript-nyelv tokeletesen alkalmas -- valaszd azt, amiben a leggyorsabban haladsz. En peldaul R-t hasznalnek :)
- A hozzászóláshoz be kell jelentkezni
Én awk-t választanék, de csak azért, mert azt már ismerem. Amúgy csináld abban, amiben otthon érzed magad.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Perl!
Még azzal sem egyszerű mert van egy pár ága a dolognak.
A perl-t pedig ilyen feladatokra találták ki!
Gabi
- A hozzászóláshoz be kell jelentkezni