Parsowanie spisu imienin

Potrzebowałem – potrzebuje:) bo wciąż jeszcze tego nie zrobiłem – tabele SQL z imieninami – imię i data jego imienin. Oczywiście potrzebowałem danych – to akurat było bardzo proste, odpowiedni spis znalazłem na Wikipedii

Mogłem szukać dalej i znaleźć coś łatwiejszego do parsowania, ale pomyślałem, że to przerobienie tego spisu będzie dość proste. I w sumie tak było.

Niewiele więc myśląc skopiowałem tekst strony i wkleiłem do pliku imiona.txt. Pierwszy problem – pozbyć linii – nie zawierających imion:

(...)
    * Aurelian — 4 lipca, 25 września
    * Aureliusz — 9 września, 13 września, 16 listopada


   (wróć do indeksu)

B [edytuj]

    * Balbin — 21 grudnia
    * Balbina — 31 marca, 2 grudnia
(...)

Wystarczyło wklepać w konsoli:

Tak, teraz trzeba było tylko sparsować plik tmp.txt - wymęczyłem w końcu skrypt:

{geshi lang=bash num=true}#!/usr/bin/env python #-*- coding: utf-8 -*- import re pat_name = re.compile(' *\* (?P.*) — ') month = { "stycznia":0, "lutego":1, "marca":2, "kwietnia":3, "maja":4, "czerwca":5, "lipca":6, "sierpnia":7, "września":8, "października":9, "listopada":10, "grudnia":11 } try: inFile = open("tmp.txt") for line in inFile: tmp = pat_name.search(line) if tmp: # Usuwanie \n line = line[:-1] # Usuwanie ostatniego znaku - o ile jest if line[-1:] == ',' or line[-1:] == '.': line = line[:-1] # Wydzielenie dat strdate = line.split(' — ')[1] # Wydzielamy imiona names = tmp.group('name').split(', ') if len(names) == 1: names = names[0].split(',') # Rozdzielamy daty dates = strdate.split(',') # Uzyskane wyniki - imiona: for name in names: print name # - daty ich imienin for date in dates: if date[0] == ' ': date = date[1:] print "data:", date, month[date.split(' ')[1]] finally: inFile.close()

Zadziało, zamieszczony skrypt jeszcze nie generuje skryptu SQL, ale to już tylko kwestia wklepywania danych do pliku miedzy odpowiednimi tekstami

Inne kwestie:

  • Po co to zamieszczam? Jako przykład – działa, a może się nawet komuś przydać. Z analizy cudzego kodu o którym wiemy, że jest poprawny, można się dowiedzieć paru rzeczy.
  • Spis z Wiki nie był idealny, tu brak spacji, tu przecinek za dużo itp – stąd jest w skrypcie klika dodatkowych ifów i nieco dziwne rozwiązania.
  • A.. miesiące mają przyporządkowane numery od 0 – to chyba akurat widać.

Nowi motocykliści Apokalipsy

Czyli drobne rozważania po lekturze książki “Dobry Omen“, którą napisali: Terry Pratchett i Neil Gaiman. Uff… w końcu wymęczyłem tą książkę – jak mnie nikt z kompa nie zrzuca, to jakoś mam mało czasu na czytanie. W tym tygodniu jednak sporo siedziałem w pociągu, laptopa nie mam, a książkę miałem w plecaku.

Teraz słowo o czym jest ta książka; to w pewnym sensie pastiż filmu “Omen” oraz widziane oczyma (głównie podejrzewam Pratechetta) autorów zwieńczenie istnienia naszej planety – słowem “Apokalipsy”.

Oczywiście w powieści nie zabrakło Czterech Jeźdźców Apokalipsy, małego tego są… dodatkowi:) Pewien gang motocyklistów postanowił podążać za prawdziwymi. Specjalnie na tę okazję przybrali odpowiednie miana reprezentujące toczące ludzkość nie szczęścia – jadą wszak za Wojną, Głodem, Skażeniem i Śmiercią. Tak więc – przynajmniej według tej czwórki – nowymi plagami dla ludzkości miałby by być: Poważne Obrażenia Cielesne, Wstydliwe Prywatne Problemy, Okrucieństwo Wobec Zwierząt, Rzeczy Które Nie Działają Jak Trzeba Nawet Jak Się Je Łupnie (pasuje do informatyki – choć tu często ciężko jest coś łupnąć), Bardzo Ważni Faceci, oraz Piwo Bezalkoholowe.

Tak mnie naszło, jakie narzędzie zagłady ja wybrałbym sobie do reprezentacji… pewnie “Dzieci Neo”, albo “Nie Świadomość Istnienia Niczego Innego Poza Windowsem” (złośliwi mogli po prostu powiedzieć “Windows”:P ale to nie ja), albo “Brak czasu” (tutaj raczej marnotrawienie go na zdury).

A na co Ty narzekasz? Tak BTW: może nie wymieniajcie “Głupie Wpisy Na Joggerze”, to ja sobie odpuszczę “Głupie Komentarze”;P