IB111: cvičení 11
Zpracování textu, regulární výrazy
29. 11. 2013
Demo - soubory
Cvičení 11
Soubory # otevřeni souboru pro ctěni
Demo - soubory Demo - řetězce f = openCvstupni_soubor.txt",
Výpis seznamu studentů # načteni celého obsahu souboru do řetězce
Uložení seznamu studentů do souboru obsah = f.readO
Regulární # načteni souboru souboru jako seznam radku
výrazy Demo - regex Studenti v daném semestru radky = f.readlines() # otevřeni souboru pro zapiš
Pocty studentů v oborech f = openCvystupni_soubor.txt",
Pocty studentů v oborech seřazené # zapiš řetězce do souboru
Práce s HTML f.write(co)
Demo - HTML Odkazy Státy abeced né # uzavřeni souboru f.close()
Demo - řetězce
>>> radek = "jablko, hruška, pomeranč \n"
>>> radek = radek.rstrip()
#-> radek = 'jablko, hruška, pomeranč'
>>> radek. split(", ")
['jablko', 'hruška', 'pomeranč']
>>> radek. replaceC',", " -")
' jablko - hruška - pomeranč'
>>> radek. 8 find("hruška")
»> x = "\ n"
>>> print x,
>>> x = r" \n"
>>> print x,
\n
Výpis seznamu studentů
Stáhněte si ze studijních materiálů zmutovaný
seznam.studentu. csv.
Napište funkci, která vypíše seznam všech studentů v abecedním pořadí.
>>> studentiAbecedne() Ambrozkova, Marcel Ambrozkova, Pavla Beranova, David Butulova, Karel Butulova, Martina Butulova, Tomas Chlubnova, Vladimir Chudik, David Cukr, Filip
■0 0.0
Uložení seznamu studentů
Napište funkci, která vypíše uloží seznam všech studentů v abecedním pořadí do textového souboru.
>>> ulozStudentyAbecedne("studenti_serazene.txt")
l studentLserazene.txt
Ambrozkova, Marcel Ambrozkova, Pavla Beranova, David Butulova, Karel Butulova, Martina Butulova, Tomas Chlubnova, Vladimir Chudik, David
■0 0.0
Demo - regulární výrazy
»> import re
>>> m = re.search(r"(\w+ (\w+)" , \
"Isaac Newton, fyzik")
>>> m.group ( 0)
"Isaac Newton"
>>> m.group (1)
"Isaac"
>>> m.group (2)
"Newton"
■ libovolný znak ., opakování * + ?
■ výběr ze skupiny [abc], [a-z]
■ "cokoliv jiného než" [ "abc]
■ číslice \d, alfanumerické znaky \w, bílé znaky \s
1 -00.0
Studenti v daném semestru
Napište funkci, která vypíše pouze ty studenty kteří studují v zadaném semestru.
>>> studentiVSemestru(3) Beranova, David Ejem, Klara Fojt, Roman Hájkova, Tomas Jurka, Klara Kristanova, Barbora Kucirek, Jakub Lounek, Veronika Malecek, Kamila Nemcikova, Martin Sarman, Lukas
1 -00.0
Počty studentů v oborech
Napište funkci, která vypíše pouze počty studentů v jednotlivých oborech.
>>> poctyStudentuVOborech()
PSK 3
PTS 1
BIO 1
PDS 3
MI 2
INVS 8
SOCI 18
GRA 5
PSZD 4
UMI 13
PLIN 26
BcAP 2 6
Počty studentů v oborech seřazeně
Cvičení 11 Vylepšete předchozí funkci tak, aby vypisovala obory sestupně podle počtu studentů v daném oboru.
Soubory
Demo - soubory Demo - řetězce >>> poctyStudentuVOborechSerazene()
Výpis seznamu studentů PLIN 26
Uložení seznamu studentů do souboru BcAP 2 6
Regulární SOCI 18
výrazy UMI 13
Studenti v daném INVS 8
Pocty studentů v oborech GRA 5
Pocty studentů v PSZD 4
Práce s HTML PSK 3
Demo - HTML PDS 3
Odkazy Státy abecedně MI 2
Domácí úkol PTS 1
č.5 Pocty obyvatel Imitace textu BIO 1
Demo - HTML
import urllib2
URL_FI = "http://www.fi.muni.cz" def stahniHtml(url):
f = urllib2.urlopen(url)
obsah = f.read()
f.close()
return obsah
def najdiNadpisy(url):
text = stahniHtml(url)
nadpisy = re.findall(r'(.*?)',\
text)
print nadpisy
# [('ľ, 'Fakulta informatiky Masarykovy
# univerzity'), ('2', 'Studenti a zamestnanci'),
# ...
4 □ ► >> odkazy("http://www.fi.muni . cz " )
https://is.muni.cz/prihlaska/info.pl?op=n;utyp.
http http http http http http http http http
//www.cerit.cz/cs/cerit-sp/
//www.video.muni.cz/prednasky.cgi?fakulta. //is.muni.cz/do/14 33/uredni_deska/ //is.muni.cz/
//is .muni.cz/obchod/fakulta/fi/ //is.muni.cz/do/fi/studas/index.html //www.skm.muni.cz //library.muni.cz //inet.muni.cz
■0 0.0
Státy abecedně
Podívejte se tabulku států podle populace na adrese:
http://en.wikipedia.org/wiki/List_of_
countries_by_population
Napište funkci, která vypíše všechny státy z této tabulky
v abecedním pořadí.
>>> statyPodleAbecedy()
Afghánistán
Albania
Algeria
American Samoa Andorra Angola Anguilla
Antigua and Barbuda
■0 0.0
Počty obyvatel
Napište funkci
statyPodlePopulace(minPopulace, maxPopulace) která podle tabulky na adrese
http://en.wikipedia.org/wiki/List_of_
countries_by_population
nalezne a vypíše ty státy které mají počet obyvatel
v intervalu [minPopulace, maxPopulace].
>» statyPodlePopulace (2e8, le9) 317121000 United States 237641326 Indonesia 201032714 Brazil
Imitace textu
Napište funkci imitaceTextu (soubor, pocetSlov) , která provede analýzu četnosti slov a dvojic slov (tj. která slova následují po kterých slovech a jak často) a využije této analýzy k vygenerování náhodného textu o dané délce. Tento text jednak vypíše na standardní výstup, jednak zapíše do souboru. Název výstupního souboru určete modifikací jména vstupního souboru, např. krakatit.txt —> krakatitJmitace.txt
>» imitaceTextu ("krakatit.txt", 30) S hrůzou prsty. Potom vyslechl domovnici; zvěděl sice na tom, co budeš sebou výsměšná a rudé, jako vždy. A nám ztratil. Ovšem něco vyžvanil, uvědomoval si doktoři stopy jejího nitra