#!python
# -*- coding: iso-8859-2 -*-
## kocio, 4.08.2006, public domain
## Konwersja tabeli HTML o dowolnych rozmiarach na tabele z lista adresowa
import sys
import re
import string
## Otwieranie pliku wejsciowego
try:
infile = open(sys.argv[1])
except:
## jesli brak parametru, to domyslnie "index.html"
try: infile = open("index.html","r")
except: print "Brak pliku wejsciowego (nawet index.html)!"
## Otwieranie pliku wyjsciowego
try:
outfile = open(sys.argv[2])
except:
## jesli brak parametru, to domyslnie "stykierki-lista.html"
outfile = open("stykierki-lista.html","w")
## Wczytujemy zawartosc pliku wejsciowego i sklejamy w jeden wiersz
## (inaczej trzeba robic regexpy wieloliniowe)
tresc = string.join(infile.read().splitlines())
## Wyszukujemy wszystkie elementy "td", czyli komorki tabeli
## uwaga: tag otwierajacy
moze miec postac z opcjami, czyli | !
## uwaga: .* jest zachlanne, dopiero .*? ogranicza sie tylko do najblizszego dopasowania
komorki = re.findall(" | ", tresc)
## Teraz trzeba zamienic ten dlugi wiersz w dluga kolumne i zapisac jako HTML
## naglowek HTML
outfile.write("" + "\r\n" + "" + "\r\n")
## zaznaczamy kodowanie CP1250, bo pierwotna tresc tabeli jest w tym kodowaniu
outfile.write("" + "\r\n")
outfile.write("" + "\r\n")
## naglowek tabeli z nazwa kolumny
outfile.write("" + "\r\n" + "" + "\r\n")
outfile.write("| adres |
" + "\r\n")
for komorka in komorki:
## konwersja do stringu i zamkniecie wiersza tabeli, zeby wyszla kolumna
komorka_string = "" + str(komorka) + "
" + "\r\n"
## jesli tylko ma kod pocztowy (czyli jest prawidlowym adresem)...
kod = "[0-9][0-9]-[0-9][0-9][0-9]" ## do cwiczenia regexpow =}
if re.search(kod, komorka_string):
## ...to zapis do pliku kolejnej komorki
outfile.write(komorka_string)
## stopka HTML
outfile.write("
" + "\r\n" + "" + "\r\n" + "")
## Zamykamy pliki dla porzadku
infile.close
outfile.close