Redaktor:Liso/Užitočné pythoniny
Z Wikipédie
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!
[úprava] 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'([^\[])([0-9][0-9][0-9][0-9])', 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.*?)\[\[([0-9][0-9][0-9][0-9])\]\](.*?\]\])', r'\1\2\3',line2) # vyhod roky link v kategoriach line2=re.sub(r'(\[\[Kateg.*?)\[\[([0-9][0-9][0-9][0-9])\]\](.*?\]\])', r'\1\2\3',line2) # vyhod roky link v kategoriach line2=re.sub(r'(\[\[Kateg.*?)\[\[([0-9][0-9][0-9][0-9])\]\](.*?\]\])', r'\1\2\3',line2) # vyhod roky link v kategoriach line2=re.sub(r'(\[\[Kateg.*?)\[\[([0-9][0-9][0-9][0-9])\]\](.*?\]\])', r'\1\2\3',line2) # vyhod roky link v kategoriach line2=re.sub(r'(\[\[Kateg.*?)\[\[([0-9][0-9][0-9][0-9])\]\](.*?\]\])', 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'([0-9]{1,2}\.)1\.', r'[[\1 január]]a ',line2) # nahrad januarove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)2\.', r'[[\1 február]]a ',line2) # nahrad februarove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)3\.', r'[[\1 marec|\1 marca]] ',line2) # nahrad marcove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)4\.', r'[[\1 apríl]]a ',line2) # nahrad aprilove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)5\.', r'[[\1 máj]]a ',line2) # nahrad majove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)6\.', r'[[\1 jún]]a ',line2) # nahrad junove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)7\.', r'[[\1 júl]]a ',line2) # nahrad julove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)8\.', r'[[\1 august]]a ',line2) # nahrad augustove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)9\.', r'[[\1 septembra|\1 september]] ',line2) # nahrad septembrove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)10\.', r'[[\1 október|\1 októbra]] ',line2) # nahrad oktobrove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)11\.', r'[[\1 november|\1 novembra]] ',line2) # nahrad novembrove ciselne datumy line2=re.sub(r'([0-9]{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'([^\[])([0-9][0-9][0-9][0-9])', 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.*?)\[\[([0-9][0-9][0-9][0-9])\]\](.*?\]\])', r'\1\2\3',line2) # vyhod roky link v kategoriach line2=re.sub(r'(\[\[Kateg.*?)\[\[([0-9][0-9][0-9][0-9])\]\](.*?\]\])', r'\1\2\3',line2) # vyhod roky link v kategoriach line2=re.sub(r'(\[\[Kateg.*?)\[\[([0-9][0-9][0-9][0-9])\]\](.*?\]\])', r'\1\2\3',line2) # vyhod roky link v kategoriach line2=re.sub(r'(\[\[Kateg.*?)\[\[([0-9][0-9][0-9][0-9])\]\](.*?\]\])', r'\1\2\3',line2) # vyhod roky link v kategoriach line2=re.sub(r'(\[\[Kateg.*?)\[\[([0-9][0-9][0-9][0-9])\]\](.*?\]\])', 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'([0-9]{1,2}\.)1\.', r'[[\1 január]]a ',line2) # nahrad januarove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)2\.', r'[[\1 február]]a ',line2) # nahrad februarove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)3\.', r'[[\1 marec|\1 marca]] ',line2) # nahrad marcove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)4\.', r'[[\1 apríl]]a ',line2) # nahrad aprilove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)5\.', r'[[\1 máj]]a ',line2) # nahrad majove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)6\.', r'[[\1 jún]]a ',line2) # nahrad junove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)7\.', r'[[\1 júl]]a ',line2) # nahrad julove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)8\.', r'[[\1 august]]a ',line2) # nahrad augustove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)9\.', r'[[\1 septembra|\1 september]] ',line2) # nahrad septembrove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)10\.', r'[[\1 október|\1 októbra]] ',line2) # nahrad oktobrove ciselne datumy line2=re.sub(r'([0-9]{1,2}\.)11\.', r'[[\1 november|\1 novembra]] ',line2) # nahrad novembrove ciselne datumy line2=re.sub(r'([0-9]{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! :)