Electronic.sk | Základné pojmy: Elektrotechnika | Elektronika






...


A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Redaktor:Liso/Užitočné pythoniny
 

V tomto clanku budem mozno uskladnovat nejake tie pythoniny pouzitelne napr. v automatickych upravach textov.

Neexistuje ziadna zaruka, ze akykolvek script posluzi prave vasim cielom! . Nie je ani ziadna zaruka, ze je ktorykolvek skript optimalne nakodovany!

Wikipédia:WikiProjekt Citácie

#vytiahnutie stranok v ktorych je pouzita (embeded) sablona

import mechanize
import urllib
import re


br=mechanize.Browser()
br.set_handle_robots(False)

	
def get_embedy(meno):
	addr=u'http://sk.wikipedia.org?pojem=api.php?action=query&list=embeddedin&eititle='+urllib.quote(meno)+u'&eilimit=500&format=txt'
	for line in br.open(addr):
		hladane='^.*\ \=\> '
		if re.search(hladane, line)!=None:
			yield re.sub('\n*$', '', re.sub(hladane, '', line))

def pouzitie_sablony(meno_sablony, meno_stranky):
	text=get_page(meno_stranky)
	s=re.search('\{\{'+meno_sablony+'.*?\}\}', text,re.M|re.S|re.I)
	while s:
		yield s.group()
		text=text
		s=re.search('\{\{'+meno_sablony+'.*?\}\}', text,re.M|re.S|re.I)

zistovanie hlasovacieho prava

import re
akaka=re.compile( '\(*?\ \=\> .*?\)', re.S)

import mechanize

br=mechanize.Browser()
br.set_handle_robots(False)

def zisti(meno, start, end, namespace='all', vytlac=False):
	if namespace=='all':
		addr='http://sk.wikipedia.org?pojem=api.php?action=query&list=usercontribs&ucuser='+meno+'&format=txt&ucprop=title|timestamp&uclimit=500&ucstart='+start+'&ucend='+end+'&ucdir=older'
	else:
		addr='http://sk.wikipedia.org?pojem=api.php?action=query&list=usercontribs&ucuser='+meno+'&format=txt&ucprop=title|timestamp&uclimit=500&ucstart='+start+'&ucend='+end+'&ucdir=older&ucnamespace='+str(namespace)
	text=br.open(addr).readlines()
	if vytlac:
		print text
	a=akaka.findall("".join(text))
	return meno, len(a)

priklad pouzitia (zistujeme pocet editov za dva mesiace v hlavnom mennom priestore pre vsetkych nasich sucasnych adminov):

zstart='20080718000000'
zend='20080518000000'
hlasujuci=

for i in hlasujuci:
	a,b=zisti(i, zstart, zend, '0')
	print a,b

Vystup:

Adrian 383
Atomique 0
Bebe 0
Bronto 500
Bubamara 403
Dudo 1
Helix84 1
Jano_spoza_mláky 1
Liso 230
Maros 1
Matros 0
Metju 0
Mo-Slimy 69
Ondrejk 16
Otm 358
Palica 0
Peko 500
Prskavka 13
Rádiológ 3
Robzle 500
Stibium 7
Valasek 0
Wizzard 500

Poznamky:

  1. neda to viac ako 500, kvoli limitu v api.php!
  2. hlavny priestor je '0'
  3. datum je vo formate yyyymmddhh24miss

projekt osud

projekt potreboval preprcat subor a v nom nahradzat viacnasobne prazdne riadky, 4 ciferne roky linkom (1234 -> 1234) plus prehodit ozatvorkovane "rod. XY" za priezvisko.

import sys
import re

subor= "osudbb.txt"

f=file(subor, 'r')
line=f.read(5000)
line2=re.sub(r'(^\)(\d\d\d\d)', r'\1\2',line) # nahrad roky linkom
line2=re.sub(r'\'\'\'(.*?)( \(.*?\))(.*?)\'\'\'', r"'''\1\3\2'''", line2) # prehod rodena dozadu v  nazvoch
line2=re.sub(r'\'\'\'(.*?)( \(.*?\))(.*?\'\'\')', r"'''\1\3\2", line2) # prehod rodena dozadu v nazvoch
line2=re.sub(r'(\\Kateg.*?)\\(\d\d\d\d)\\(.*?\\)', r'\1\2\3',line2) # vyhod  roky link v kategoriach
line2=re.sub(r'(\\Kateg.*?)\\(\d\d\d\d)\\(.*?\\)', r'\1\2\3',line2) # vyhod  roky link v kategoriach
line2=re.sub(r'(\\Kateg.*?)\\(\d\d\d\d)\\(.*?\\)', r'\1\2\3',line2) # vyhod roky link v kategoriach
line2=re.sub(r'(\\Kateg.*?)\\(\d\d\d\d)\\(.*?\\)', r'\1\2\3',line2) # vyhod roky link v kategoriach
line2=re.sub(r'(\\Kateg.*?)\\(\d\d\d\d)\\(.*?\\)', r'\1\2\3',line2) # vyhod roky link v kategoriach
line2=re.sub(r'\n{3,}', r'\n\n', line2) # nahrad dva prazdne riadky jednym

# following code added by Wizzard
line2=re.sub(r'==\n{2,}', r'==\n', line2) # Zivotopis
line2=re.sub(r'.\n==', r'.\n\n==', line2) # Dielo a pod.
line2=re.sub(r"}}\n''", r"}}\n\n''", line2) # Oddelenie boxu
line2=re.sub(r"{{Osud na", r"\n{{Osud na", line2) # Oddelenie sablony
line2=re.sub(r"pravu}}", r"pravu}}\n", line2) # Oddelenie sablony
line2=re.sub(r" r\.", r" roku", line2) # r. -> roku
line2=re.sub(r" R\.", r" Roku", line2) # R. -> Roku

# posledne zmeny
line2=re.sub(r'(\w\.\,\;\"\'\!\?\)\(\\\s*)\n(\w)', r'\1 \2', line2)
line2=re.sub(r'(\w\.\,\;\"\'\!\?\)\(\\\s*)\n (\w)', r'\1 \2', line2)

line2=re.sub(r'(\n\'\'\'.*?\*.*?)(\\\d\d\d\d\\)(.*)', r'\1\2,\3', line2)
line2=re.sub(r'(\n\'\'\'.*?†.*?)(\\\d\d\d\d\\)(.*)', r'\1\2,\3', line2)

# nahradenie ciselnych datumov
line2=re.sub(r'(\d{1,2}\.)1\.', r'\1 januára ',line2) # nahrad januarove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)2\.', r'\1 februára ',line2) # nahrad februarove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)3\.', r'\1 marec|\1 marca ',line2) # nahrad marcove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)4\.', r'\1 apríla ',line2) # nahrad aprilove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)5\.', r'\1 mája ',line2) # nahrad majove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)6\.', r'\1 júna ',line2) # nahrad junove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)7\.', r'\1 júla ',line2) # nahrad julove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)8\.', r'\1 augusta ',line2) # nahrad augustove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)9\.', r'\1 septembra|\1 september ',line2) # nahrad septembrove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)10\.', r'\1 október|\1 októbra ',line2) # nahrad oktobrove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)11\.', r'\1 november|\1 novembra ',line2) # nahrad novembrove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)12\.', r'\1 december|\1 decembra ',line2) # nahrad decembrove ciselne datumy

print line2 ,
f.close()

Unixová verzia:

# -*- coding: utf-8  -*-

import sys
import re

subor= "OSUDBB.TXT"

f=file(subor, 'r')
line=f.read(32768)
line2=re.sub(r'(^\)(\d\d\d\d)', r'\1\2',line) # nahrad roky linkom
line2=re.sub(r'\'\'\'(.*?)( \(.*?\))(.*?)\'\'\'', r"'''\1\3\2'''", line2) # prehod rodena dozadu v  nazvoch
line2=re.sub(r'\'\'\'(.*?)( \(.*?\))(.*?\'\'\')', r"'''\1\3\2", line2) # prehod rodena dozadu v nazvoch
line2=re.sub(r'(\\Kateg.*?)\\(\d\d\d\d)\\(.*?\\)', r'\1\2\3',line2) # vyhod  roky link v kategoriach
line2=re.sub(r'(\\Kateg.*?)\\(\d\d\d\d)\\(.*?\\)', r'\1\2\3',line2) # vyhod  roky link v kategoriach
line2=re.sub(r'(\\Kateg.*?)\\(\d\d\d\d)\\(.*?\\)', r'\1\2\3',line2) # vyhod roky link v kategoriach
line2=re.sub(r'(\\Kateg.*?)\\(\d\d\d\d)\\(.*?\\)', r'\1\2\3',line2) # vyhod roky link v kategoriach
line2=re.sub(r'(\\Kateg.*?)\\(\d\d\d\d)\\(.*?\\)', r'\1\2\3',line2) # vyhod roky link v kategoriach
line2=re.sub(r"\x0D\x0A{3,}", r"\n\n", line2) # nahrad dva prazdne riadky jednym

# following code added by Wizzard
line2=re.sub(r"==\x0D\x0A{2,}", r"==\n", line2) # Zivotopis
line2=re.sub(r".\x0D\x0A==", r".\n\n==", line2) # Dielo a pod.
line2=re.sub(r"}}\x0D\x0A''", r"}}\n\n''", line2) # Oddelenie boxu
line2=re.sub(r"{{Osud na úpravu}}", r"\n{{Osud na úpravu}}\n", line2) # Oddelenie sablony
line2=re.sub(r" r\.", r" roku", line2) # r. -> roku
line2=re.sub(r" R\.", r" Roku", line2) # R. -> Roku
line2=re.sub(r" hl\.", r" hlavný", line2) # hl. -> hlavný
line2=re.sub(r" Hl\.", r" Hlavný", line2) # Hlavný. -> hlavný

# nahradenie ciselnych datumov
line2=re.sub(r'(\d{1,2}\.)1\.', r'\1 januára ',line2) # nahrad januarove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)2\.', r'\1 februára ',line2) # nahrad februarove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)3\.', r'\1 marec|\1 marca ',line2) # nahrad marcove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)4\.', r'\1 apríla ',line2) # nahrad aprilove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)5\.', r'\1 mája ',line2) # nahrad majove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)6\.', r'\1 júna ',line2) # nahrad junove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)7\.', r'\1 júla ',line2) # nahrad julove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)8\.', r'\1 augusta ',line2) # nahrad augustove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)9\.', r'\1 septembra|\1 september ',line2) # nahrad septembrove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)10\.', r'\1 október|\1 októbra ',line2) # nahrad oktobrove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)11\.', r'\1 november|\1 novembra ',line2) # nahrad novembrove ciselne datumy
line2=re.sub(r'(\d{1,2}\.)12\.', r'\1 december|\1 decembra ',line2) # nahrad decembrove ciselne datumy

print line2 ,
f.close()

pouzitie: Script ulozime do suboru. Napr. s menom wikiroky.py a potom (ak mame nainstalovany python a zdrojovy subor sa vola tak ako je to v scripte :) spustime:

python wikiroky.py > vystup.txt

v subore vystup.txt by sme mali mat spracovany vysledok. Nezabudnite vzdy skontrolovat!!! Program nikdy nedokaze osetrit vsetky mozne pripady co sa v nom mozu vyskytnut! :)

Zdroj:
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.






Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky použitia.

Your browser doesn’t support the object tag.

www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk