[Talk-cz] jizdni rady: uzitecny parser

Marián Kyral mkyral na email.cz
Středa Září 2 21:06:57 UTC 2015


Dne 2.9.2015 v 11:53 Pavel Machek napsal(a):
> Ahoj!
>
>> Koukám na to rozbalování, máme to plus mínus stejně. Ale než tahle hala bala
>> se mi více líbí rozbalení do struktury
>>
>> <dopravce>/<linka>/
>>
>>
>>
>>
>> To už mám rozvrtáno, večer dokončím a pošlu. Jediný problém na který jsem 
>> narazil bylo, že někteří dopravci mají ve svém jméně čárku, takže cut -d ","
>> mi vrátil jen kousek. To se dá vyřešit přes cut -d '"'. Jenže to mně napadlo
>> až teď ráno ;-)
> Ono by to chtelo poradne parsovat CSV...
>
>> No a pak ještě ze zména dopravce buď úplně odstranit diakritiku, nebo ji 
>> převést z cp1250 do utf-8 (iconv -f cp1520 -t utf-8)
> Nastesti ten python si s charsetama celkem rozumi... tohle bylo
> nakonec rychle.
>
> Pridal jsem opravdovy parser, otaceni linek, a castecne parsovani
> poznamek.
>
> Rozhodnout se podle toho jejich systemu, ktery dny to teda jede bude
> jeste na dlouho.
>
> Kazdopadne kod je tady...
>
> http://timetab.cvs.sourceforge.net/viewvc/timetab/timetab/cz/cis/
>
> ...a je dost zajimave videt jak maji ta data udelana "doopravdy".
>
> 									Pavel

Moc pěkné. Zatím nevím, jestli mi to k něčemu bude, ale je to fakt pěkné :-D

Já mezitím splácal skript, který ta čísílka trochu přeorganizuje:

$ ls -la Dopravní\ podnik\
Dopravní podnik hl.m. Prahy, a.s./                       Dopravní podnik
města České Budějovice, a.s./            Dopravní podnik města Olomouce,
a.s./                    Dopravní podnik měst Chomutova a Jirkova a.s./
Dopravní podnik Karlovy Vary, a.s./                      Dopravní podnik
města Děčína, a.s./                      Dopravní podnik města Pardubic
a.s./                     Dopravní podnik měst Liberce a Jablonce nad
Nisou, a.s./
Dopravní podnik Kněžmost, s.r.o./                        Dopravní podnik
města Hradce Králové, a.s./              Dopravní podnik města Ústí nad
Labem a.s./               Dopravní podnik Mladá Boleslav, s.r.o./
Dopravní podnik města Brna, a.s./                        Dopravní podnik
města Jihlavy, a.s./                     Dopravní podnik Města Vlachovo
Březí, s.r.o./            Dopravní podnik Ostrava a.s./

$ ls -la Dopravní\ podnik\ města\ Děčína\,\ a.s./
celkem 328
drwxr-xr-x  17 marian users   4096  2. zář 22.18 .
drwxr-xr-x 240 marian users 266240  2. zář 22.59 ..
drwxr-xr-x   2 marian users   4096  2. zář 22.09 515001
drwxr-xr-x   2 marian users   4096  2. zář 22.09 515002
drwxr-xr-x   2 marian users   4096  2. zář 22.13 515004
drwxr-xr-x   2 marian users   4096  2. zář 22.14 515005
drwxr-xr-x   2 marian users   4096  2. zář 22.13 515006
drwxr-xr-x   2 marian users   4096  2. zář 22.09 515007
drwxr-xr-x   2 marian users   4096  2. zář 22.13 515008
drwxr-xr-x   2 marian users   4096  2. zář 22.08 515009
drwxr-xr-x   2 marian users   4096  2. zář 22.10 515010
drwxr-xr-x   2 marian users   4096  2. zář 22.07 515012
drwxr-xr-x   2 marian users   4096  2. zář 22.18 515014
drwxr-xr-x   2 marian users   4096  2. zář 22.08 515017
drwxr-xr-x   2 marian users   4096  2. zář 22.16 515032
drwxr-xr-x   2 marian users   4096  2. zář 22.08 515033
drwxr-xr-x   2 marian users   4096  2. zář 22.08 515037


$ cat organize.sh
#!/bin/bash

ls -1d [0-9]* |sort -n |while read D;
do
  Dopravce=$(cat $D/Dopravci.txt |head -n 1 |iconv -f cp1250 -t
utf-8|cut -d '"' -f 6);
  Linka=$(cat $D/Linky.txt |cut -d '"' -f 2);
  DR="${Dopravce}/${Linka}";
  echo "$D: $DR"
  mkdir -p "$DR";
  ls -1 $D/*.txt |while read FTX;
  do
    cat $FTX |iconv -f cp1250 -t utf-8 > "$DR/$(basename $FTX)";
  done;
done

Kdo nechce převádět soubory do utf-8 nechť si laskavě ve třetím řádku
odspodu nahradí cat |iconv ... za mv.

Marián




Další informace o konferenci talk-cz