Zaawansowany kurs języka Python



Podobne dokumenty
Kurs rozszerzony języka Python

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

XML w.net. Dominik Baś nr alb Wrocław, 29 maja 2007

Perl a XML. Narzędzia informatyczne w językoznawstwie. Generowanie danych XML - Przykład. Generowanie danych XML. Perl - Przetwarzanie XML

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Zaawansowany kurs języka Python

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

XML i nowoczesne technologie zarządzania treścią

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie

DOM (Document Object Model)

Dokumentacja Użytkownika Systemu

Zaawansowane aplikacje WWW - laboratorium

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

29. Poprawność składniowa i strukturalna dokumentu XML

SAX i DOM wykorzystanie XML-a we własnych aplikacjach. Simple API for XML Parsing Document Object Model

XML extensible Markup Language. Paweł Chodkiewicz

WYKŁAD 3 XML DOM XML DOCUMENT OBJECT MODEL CZĘŚĆ 1

Facelets ViewHandler

XML Path Language (XPath)

UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania

PHP. Tematyka wykładów: Język PHP PHP i bazy danych Rozszerzenia PHP

Język Python (2) Język Python (2) 1/36

Zaawansowany kurs języka Python

Kurs rozszerzony języka Python

XML i nowoczesne technologie zarządzania treścią 2007/08

Zaawansowany kurs języka Python

Plan prezentacji. Krótko o XML Arkusze stylów XSLT XSL XSL Path Przegląd konstrukcji języka i przykłady Narzędzia Podsumowanie Literatura

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

XML extensible Markup Language. część 5

I. Formatowanie tekstu i wygląd strony

Wyrażenia regularne. Wyrażenia regularne 1/41

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Model semistrukturalny

Złożone komponenty JSF wg

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

Definicja. Not Only SQL

Podstawy XML-a. Zaawansowane techniki programowania

XHTML - Extensible Hypertext Markup Language, czyli Rozszerzalny Hipertekstowy Język Oznaczania.

HTML (HyperText Markup Language) hipertekstowy język znaczników

Złożone komponenty JSF wg

Zaawansowany kurs języka Python

Dokumenty SEDU składają się z dwóch części: Opisu sprawy Formularza elektronicznego

Steganografia w HTML. Łukasz Polak

Rys.2.1. Drzewo modelu DOM [1]

Kurs rozszerzony języka Python

Rola języka XML narzędziem

Kurs rozszerzony języka Python

Kurs języka Python. Wykład 5. Marcin Młotkowski. 9 listopada Rodzaje parametrów funkcji. 2 Biblioteka Tk. 3 Układanie kontrolek w oknie

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Prezentacja i transformacja

HTML DOM, XHTML cel, charakterystyka

Podstawy (X)HTML i CSS

Zaawansowany kurs języka Python

Spis treści Informacje podstawowe Predykaty Przykłady Źródła RDF. Marek Prząda. PWSZ w Tarnowie. Tarnów, 6 lutego 2009

Języki formatowania dokumentów strukturalnych. XSL przekształcenia XML-a. XSL a XSLT. XSL części składowe. Zasada działania przekształcenia XSLT

Zasady programowania Dokumentacja

Programowanie obiektowe

Katalog książek cz. 2

Standard pliku importu danych pracowników i firm do programu e-pity (od wersji e-pity 3.0)

REACT NATIVE. Anna Maziejuk Kamil Jankowski

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

OSIOŁKOWI W ŻŁOBY DANO...

media Blitz wydajne sytemy szablonów

Przed zaimportowaniem danych należy odpowiednio skonfigurować sposób interpretacji danych z zakładki [Ustawienie pliku importu]

Programowanie w Ruby

JavaScript funkcyjność

METODY REPREZENTACJI INFORMACJI

Definiowanie języka przez wyrażenie regularne(wr)

Plan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową

Programowanie i projektowanie obiektowe

Aplikacje WWW - laboratorium

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Drzewa DOM. Maciej Zakrzewicz.

PROGRAMOWANIE. WNPiD UAM, Programowanie, inż. Piotr Jabłoński

Zaawansowana Pracownia Komputerowa - Ćwiczenia. Krzysztof Miernik

Wykład 5_2 Arkusze stylów dziedziczenie. Technologie internetowe Zofia Kruczkiewicz

Informację na temat struktury pliku XML

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Location paths. Osie (axes)

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Aplikacje internetowe laboratorium XML, DTD, XSL

Programowanie i projektowanie obiektowe

Wyrażenie wewnątrz nawiasów jest atomem (rozpatrujemy je jako całość).

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Wstęp do programowania

Instrukcja integracji z portalem ogłoszeń praca.24portal.pl

XQuery. XQuery. Przykład. dokument XML. XQuery (XML Query Language) XQuery 1.0: An XML Query Language. W3C Recommendation

Metody dostępu do danych

Skanowanie OCR w aplikacji Kancelaria Komornika. Instrukcja dla użytkownika

Zaawansowany kurs języka Python

Young Programmer: HTML+PHP. Dr inż. Małgorzata Janik, Zajęcia #2

Metody Kompilacji Wykład 3

Extensible Markup Language III

Podstawy programowania w Pythonie

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Wyrażenia regularne. Regular expressions. aka. Regexp

Transkrypt:

Wykład 5. 30 października 2013

Plan wykładu 1 2 3 4

yield from Zamiast Example for item in iterable: yield item: można pisać Example yield from iterable

Plan wykładu 1 2 3 4

Przykłady wyrażeń regularnych W systemie windows c:\windows\system32> dir *.exe Wynik accwiz.exe actmovie.exe ahui.exe alg.exe append.exe arp.exe asr fmt.exe, asr ldm.exe...

Przykłady, cd?n*x, *BSD $ rm *.tmp Przykłady wyrażeń regularnych wyr. reg. zbiór słów alamakota { alamakota } (hop!)* {, hop!, hop!hop!, hop!hop!hop!,...} br+um { brum, brrum, brrrum,... }

Wyszukwanie a dopasowywanie biblioteka re import re dopasowanie od początku tekstu if re.match( brr+um, brrrrum!!! ): print pasuje Niepasujący suffiks może być zignorowany. wyszukiwanie if re.search( brr+um, Autko robi brrrrum!!! ): print jest

Kompilowanie wyrażeń regularnych import re automat = re.compile( brr+um ) automat.search( brrrrum ) automat.match( brrrrum )

Interpretacja wyniku >>> re.search( brr+um, brrrum!!! ) MatchObject.group(): dopasowany tekst.start(): początek dopasowanego tekstu.end(): koniec dopasowanego tekstu

Większy przykład Zadanie Znaleźć na stronie html owej wszystkie odwołania do innych stron przykłady www.ii.uni.wroc.pl ii.yebood.com

Rozwiązanie zadania Implementacja adres = ([a-za-z]+\.)*[a-za-z]+ automat = re.compile( http:// + adres) tekst = fh.read()

Rozwiązanie zadania Implementacja adres = ([a-za-z]+\.)*[a-za-z]+ automat = re.compile( http:// + adres) tekst = fh.read() [ url.group() for url in automat.finditer(tekst) ]

Podręczne zestawienie metaznaków znak opis w* wystąpienie 0 lub więcej razy w w + wystąpienie co najmniej raz w w{m, n} w występuje przynajmniej m razy, a co najwyżej n razy w? 0 lub 1 wystąpienie w w 1 w 2 alternatywa znaków w 1 i w 2. dowolny znak oprócz znaku nowego wiersza [aeiouy] pojedyncza samogłoska [A Z] wielka litera

Popularne skróty znak opis \d dowolna cyfra \w znak alfanumeryczny (zależy od LOCALE) \Z koniec napisu

Problem z ukośnikiem Rola ukośnika w Pythonie Imię\tNazwisko\n print Tabulator to znak \\t c:\\windows\\win.ini

Ukośnik a wyrażenia regularne Wyszukiwanie [ re.match( \[, [ )

Ukośnik a wyrażenia regularne Wyszukiwanie [ re.match( \[, [ ) Zagadka Jak znaleźć w tekście \[?

Próby rozwiązania \[ re.match( \[, \[ ) # błąd kompilacji wyrażenia regularnego

Próby rozwiązania \[ re.match( \[, \[ ) re.match( \[, [ ) # błąd kompilacji wyrażenia regularnego # wynik: None

Próby rozwiązania \[ re.match( \[, \[ ) re.match( \[, [ ) # błąd kompilacji wyrażenia regularnego # wynik: None \\[ re.match( \\[, \[ ) # błąd kompilacji wyrażenia regularnego

Próby rozwiązania \[ re.match( \[, \[ ) re.match( \[, [ ) # błąd kompilacji wyrażenia regularnego # wynik: None \\[ re.match( \\[, \[ ) # błąd kompilacji wyrażenia regularnego re.match( \\[, [ ) # wynik: None

Próby rozwiązania \[ re.match( \[, \[ ) re.match( \[, [ ) # błąd kompilacji wyrażenia regularnego # wynik: None \\[ re.match( \\[, \[ ) # błąd kompilacji wyrażenia regularnego re.match( \\[, [ ) # wynik: None re.match( \\\[, \[ ) re.match( \\\\[, \[ ) # wynik: None # wynik: None

Poprawne rozwiązanie Rozwiązanie re.match( \\\\\[, \[ ) re.match(r \\\[, \[ )

Przetwarzanie znaków Przetwarzanie stringów na poziomie Pythona string w Pythonie znak prawdziwy \n 0x0A \t 0x0B \\ 0x5C Przetwarzanie stringów na poziomie wyrażeń regularnych string w wyrażeniu regularnym znak prawdziwy \[ 0x5B

Trochę o grupach res = re.match( a(b*)a.*(a), abbabbba ) print res.groups() Wynik ( bb, a )

Wyrażenia grupujące (?P<nazwa>regexp)

Zadanie Z daty w formacie 20131030 wyciągnąć dzień, miesiąc i rok.

Rozwiązanie Wyrażenie regularne wzor = (?P<rok>\d{4})(?P<mies>\d{2})(?P<dzien>\d{2})

Rozwiązanie Wyrażenie regularne wzor = (?P<rok>\d{4})(?P<mies>\d{2})(?P<dzien>\d{2})

Rozwiązanie Wyrażenie regularne wzor = (?P<rok>\d{4})(?P<mies>\d{2})(?P<dzien>\d{2})

Rozwiązanie Wyrażenie regularne wzor = (?P<rok>\d{4})(?P<mies>\d{2})(?P<dzien>\d{2})

Rozwiązanie Wyrażenie regularne wzor = (?P<rok>\d{4})(?P<mies>\d{2})(?P<dzien>\d{2}) res = re.search(wzor, W dniu 20131030 jest wykład z Pythona )

Rozwiązanie Wyrażenie regularne wzor = (?P<rok>\d{4})(?P<mies>\d{2})(?P<dzien>\d{2}) res = re.search(wzor, W dniu 20131030 jest wykład z Pythona ) print res.group( rok ), res.group( mies )

Plan wykładu 1 2 3 4

Plik html to ciąg znaczników <html> <title>tytuł</title> <body bgcolor= red > <div align= center >Tekst</div> </body> </html> Tagi otwierające <html>, <body>, <div> Tagi zamykające </body>, </div>, </html>

html (Python 2.*: sgmllib) class html.parser.htmlparser: def handle starttag(self, tag, attrs): def handle endtag(self, tag):

Przykład (Python 3.*) Wypisać wszystkie odwołania href <a href="adres">tekst</a>

Przykład (Python 3.*) Wypisać wszystkie odwołania href <a href="adres">tekst</a> import html.parser class MyHTMLParser(html.parser.HTMLParser): def handle starttag(self, tag, attrs): if tag == a : for (atr, val) in attrs: if atr == href : print(val) myparser = MyHTMLParser() with open( python.html ) as data: myparser.feed(data.read())

Plan wykładu 1 2 3 4

XML Przykład <?xml version="1.0" encoding="utf-8"?> <biblioteka> <ksiazka egzemplarze="3"> <autor>ascher, Martelli, Ravenscroft</autor> <tytul>python. Receptury</tytul> </ksiazka> <ksiazka> <autor/> <tytul>python. Od podstaw</tytul> </ksiazka> </biblioteka>

Przetwarzanie XML przetwarzanie kolejnych znaczników (saxutils) utworzenie drzewa (DOM) odpowiadającego xml owi (xml)

SAX Simple Api for XML elementy dokumentu są stopniowo wczytywane dla każdego elementu wywoływana jest odpowiednia metoda parsera

Implementacja parsera Domyślny parser from xml.sax import * class saxutils.defaulthandler: def startdocument(self): pass def enddocument(self): pass def startelement(self, name, attrs): pass def endelement(self, name): pass def characters(self, value): pass

Implementacja własnego parsera class SaxReader(saxutils.DefaultHandler): def characters(self, value): print value def startelement(self, name, attrs): for x in attrs.keys():

Wykorzystanie parsera from xml.sax import make parser from xml.sax.handler import feature namespaces from xml.sax import saxutils parser = make parser() parser.setfeature(feature namespaces, 0) dh = SaxReader() parser.setcontenthandler(dh) parser.parse(fh)

SAX: podsumowanie Przetwarzanie w trybie do odczytu ; przetwarzanie porcjami; SAX jest szybki, nie wymaga dużej pamięci.

DOM: Document Object Model Dokument jest pamiętany w całości jako drzewo Dokument (drzewo) można modyfikować; Przetwarzanie wymaga sporo czasu i pamięci, całe drzewo jest przechowywane w pamięci; Specyfikacją zarządza W3C.

Przypomnienie Przykład <?xml version="1.0" encoding="utf-8"?> <biblioteka> <ksiazka egzemplarze="3"> <autor>ascher, Martelli, Ravenscroft</autor> <tytul>python. Receptury</tytul> </ksiazka> <ksiazka> <autor/> <tytul>python. Od podstaw</tytul> </ksiazka> </biblioteka>

Ilustracja Document <?xml version="1.0" encoding="utf-8"?> Element <biblioteka> Text "" Element Text Element <ksiazka> "" <ksiazka> Text "" Element <autor> Element <tytul> Text Asher,... Text Python. Od...

Biblioteki xml.dom: DOM Level 2 xml.dom.minidom: Lightweight DOM implementation, DOM Level 1

Implementacja minidom Klasa Node atrybut klasy.nodename.nodevalue.attributes.childnodes przykład biblioteka, ksiazka, autor Python. Receptury <ksiazka egzemplarze= 3 > lista podwęzłów

Tworzenie drzewa Przeglądanie pliku XML import xml def wezel(node): print node.nodename for n in node.childnodes: wezel(n) doc = xml.dom.minidom.parse( content.xml ) wezel(doc)

Manipulacja drzewem DOM Manipulacja węzłami appendchild(newchild) removechild(oldchild) replacechild(newchild, oldchild)

Manipulacja drzewem DOM Manipulacja węzłami appendchild(newchild) removechild(oldchild) replacechild(newchild, oldchild) Tworzenie nowych węzłów new = document.createelement( chapter ) new.setattribute( number, 5 ) document.documentelement.appendchild(new) print document.toxml()

Podsumowanie: DOM umożliwia manipulowanie całym drzewem wymaga wiele czasu i pamięci dla dużych plików