#!/usr/bin/env python2.4 # -*- coding: utf-8 -*- import sys import re from pysqlite2 import dbapi2 as sqlite ddregex = re.compile('.*
(.*)
.*', re.UNICODE) dtregex = re.compile('.*
(.*)
.*', re.UNICODE) uniregex = re.compile('.*(.*).*', re.UNICODE) def store(category, value): query = u"insert into %s values (?)" % category cursor.execute(query, (value,)) conn.commit() def parse_simple(line, category): m = re.match(ddregex, line) if m: store(category, m.group(1)) return parse_normal def parse_city(line): return parse_simple(line, 'cities') def parse_region(line): return parse_simple(line, 'regions') def parse_faculty(line): return parse_simple(line, 'faculties') def parse_level(line): return parse_simple(line, 'levels') def parse_languages(line): return parse_simple(line, 'languages') def parse_industry(line): m = re.match(ddregex, line) if not m: return parse_normal industries = m.group(1).split('
') for i in industries[:-1]: store('industries', i) return parse_normal def parse_university(line): m = re.match(ddregex, line) if not m: return parse_normal m = re.match(uniregex, m.group(1)) if not m: return parse_normal store('universities', m.group(1)) return parse_normal def parse_normal(line): m = re.match(dtregex, line) if not m: return parse_normal if m.group(1).startswith('Miejscowo'): return parse_city if m.group(1).startswith('Wojew'): return parse_region if m.group(1).startswith('Bran'): return parse_industry if m.group(1).startswith('Kierunek'): return parse_faculty if m.group(1).startswith('Poziom'): return parse_level if m.group(1).startswith('Uczelnia'): return parse_university if m.group(1).endswith('zyki:'): return parse_languages return parse_normal fun = parse_normal conn = sqlite.connect('stats.db') cursor = conn.cursor() for line in sys.stdin: fun = fun(line) conn.close()