abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 19:55 | Zajímavý software

    smenu, nástroj pro příkazový řádek pro generování možností a potvrzení výběru, dospěl do verze 1.0.0.

    Ladislav Hagara | Komentářů: 0
    dnes 19:11 | Bezpečnostní upozornění

    Byla potvrzena zranitelnost CVE-2021-46778 aneb SQUIP (Scheduler Queue Usage via Interference Probing) v procesorech AMD s mikroarchitekturou Zen 1, Zen 2 a Zen 3. Detaily v publikovaném paperu.

    Ladislav Hagara | Komentářů: 0
    dnes 13:33 | Nová verze

    Turris OS, operační systém pro síťová zařízení Turris postavený na OpenWrt, byl vydán v nové verzi 5.4. Přehled novinek a diskuse v diskusním fóru.

    Ladislav Hagara | Komentářů: 0
    dnes 13:11 | Nová verze

    Byla vydána nová stabilní verze 5.4 (aktuálně 5.4.2753.28) webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 104.0.5112.83. Přehled novinek v příspěvku na blogu. Vivaldi Mail byl povýšen na verzi 1.1.

    Ladislav Hagara | Komentářů: 0
    včera 23:33 | Bezpečnostní upozornění

    Intel vydal 27 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20220809 mikrokódů pro své procesory. Ta řeší INTEL-SA-00657. Jedná se o bezpečnostní chybu ÆPIC Leak aneb CVE-2022-21233.

    Ladislav Hagara | Komentářů: 1
    včera 20:22 | Nová verze

    Byla vydána nová verze 2022.3 průběžně aktualizované linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem nových nástrojů v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    včera 18:11 | Nová verze

    Byla vydána nová major verze 4.0 programovacího jazyka a vývojového prostředí Processing. Ke stažení na GitHubu. Přehled novinek na wiki.

    Ladislav Hagara | Komentářů: 0
    včera 09:00 | Komunita

    Konference OpenAlt 2022 proběhne o víkendu 17. a 18. září na FIT VUT v Brně. Přednášky lze přihlásit do 15. srpna.

    Ladislav Hagara | Komentářů: 0
    včera 08:00 | Zajímavý článek

    GNOME Web (Epiphany) přichází s podporou rozšíření, která jsou kompatibilní s rozšířeními ve Firefoxu. Více v článku WebExtensions v Epiphany (GNOME Web) na MojeFedora.cz.

    Ladislav Hagara | Komentářů: 1
    včera 07:00 | IT novinky

    Ve Vancouveru probíhá konference a výstava SIGGRAPH 2022 (Special Interest Group on Computer Graphics and Interactive Techniques) věnována počítačové grafice. Řada firem představuje své novinky. Intel například představil profesionální grafické karty Arc Pro A50, A40 a A30M (Mobile).

    Ladislav Hagara | Komentářů: 0
    Audioknihy ve srovnání s knihami tištěnými (papírovými nebo elektronickými) poslouchám
     (31%)
     (2%)
     (6%)
     (60%)
    Celkem 159 hlasů
     Komentářů: 1, poslední 8.8. 21:17
    Rozcestník

    Skript vypisující duplicitní buňky v .ods

    5.8.2006 21:21 | Přečteno: 828× | Výběrový blog | poslední úprava: 5.8.2006 22:49

    Zdravím,
    níže je malý skriptík, užitečný například pro ty, co si do spreadsheetu vypisují slovíčka a stane se jim, že si některé slovíčko vypíší dvakrát. Projede zadaný soubor, načte obsah všech buněk a mají-li některé buňky identický obsah, vypíše jej + počet záznamů, takže je pak již jednoduché v OO dané buňky vyhledat a případně odstranit. Zřejmě by měl fungovat i při použití se starším .sxc. Je možné, že na to existuje i nějaké systémovější řešení, ale po lehkém googlení jsem nic nenašel a při vědomí toho, že .ods je v XML, jsem ani moc nepátral. Stačí uložit do souboru, chmod +x a jako parametr zadat název souboru, např.: ./soubor.py nemcina-slovicka.ods

    #!/usr/bin/env python
    import string,zipfile,sys
    def notods():
    	print 'soubor asi nebude od oo.o'
    	sys.exit(2)
    if not len(sys.argv)==2:
    	print 'chybne argumenty'
    	sys.exit(2)
    name=sys.argv[1]
    if not zipfile.is_zipfile(name):
    	notods()
    a=zipfile.ZipFile(name,'r')
    c='content.xml'
    if not c in a.namelist():notods()
    data=a.read(c)
    z='<text:p>'
    k='</text:p>'
    ki=0
    prevz=1
    prevk=1
    found=[]
    while ki!=-1:
    	zi=string.find(data,z,prevz)+len(z)
    	ki=string.find(data,k,prevz)
    	prevz=ki+len(k)
    	if not ki==-1:
    		found.append(data[zi:ki])
    dp={}
    for i in found:
    	if len(i)<3:
    		continue
    	if found.count(i)!=1:
    		if i.isdigit():continue
    		if not dp.has_key(i):
    			dp[i]=found.count(i)
    for i in dp:
    	print i,str(dp[i])+'x'
    

    update: Přeskakuje čísla a buňky, jejichž obsah je kratší než tři znaky (to je feature, nikoliv bug), dá se upravit zakomentováním if i.isdigit():continue, resp. if len(i)<3: continue        

    Hodnocení: 83 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    5.8.2006 21:24 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Skoro si říkám, že takový spredsheet by to mohl zvládnout sám… Ale dělat si iluze, že OO.o Calc něco zvládne, to už mě přešlo :-)
    Copak toho není dost?
    5.8.2006 21:28 misterlister | skóre: 12 | blog: aiyyo
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Asi umí, ale veškeré moje dovednosti s podobnými programy končí u zapsání dat a změny rozměrů buněk :-) Teď se (marně) snažím přijít na to, jak vyhledat buňku obsahující dnešní datum -x dní. Tentokrát u Pythonu skončit nemůžu, potřebuju to funkční na Pocket PC :-/
    5.8.2006 21:24 misterlister | skóre: 12 | blog: aiyyo
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Mimochodem, kdyby tu byl někdo přes RE, snažil jsem se původně toto ošklivé:
    while ki!=-1:
    	zi=string.find(data,z,prevz)+len(z)
    	ki=string.find(data,k,prevz)
    	prevz=ki+len(k)
    	if not ki==-1:
    		found.append(data[zi:ki])
    
    řešit reg. výrazy, ale nepodařilo se mi najít ten správný :-( Je třeba, aby matchoval <text:p>(cokoliv)</text:p>. Za nakopnutí bych byl vděčen :-)
    Vojta Drbohlav avatar 5.8.2006 22:04 Vojta Drbohlav | skóre: 26 | blog: Blog | Strahov
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    co třeba re.findall("<text:p>(.+)</text:p>", a) ... jestli plácám blbosti tak si toho nevšímejte ;-)
    Vojta Drbohlav avatar 5.8.2006 22:14 Vojta Drbohlav | skóre: 26 | blog: Blog | Strahov
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    spíš takhle re.findall("<text:p>(.+)</text:p>", data)
    5.8.2006 22:41 misterlister | skóre: 12 | blog: aiyyo
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Bohužel, také nic. Kouknu na to ještě jednou zítra, případný výsledek doplním.
    Marek Bernát avatar 6.8.2006 00:46 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Niečo takéto?
    import re
    rp = re.compile("<text:p>([^<>]*)</text:p>")
    rp.findall(data)
    
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    6.8.2006 10:33 misterlister | skóre: 12 | blog: aiyyo
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Tohle funguje, díky, nicméně jestli tomu dobře rozumím, tak matchuje všechno kromě < a > .. tedy kdyby oo.o nenahrazovalo tyto znaky, zřejmě by je to vynechalo. Ale ono nahrazuje, takže je to v zásadě jedno :-)
    Marek Bernát avatar 6.8.2006 12:30 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Aby som to trochu viac vysvetlil
    rp = re.compile("<text:p>([^<>]*)</text:p>")
    rp.findall(data)
    
    je ekvivalentné
    re.findall("<text:p>([^<>]*)</text:p>", data)
    
    ,ale ak potrebujete s tým regexom ešte pracovať, tak je výhodnejšie ho skompilovať len raz.

    K tým > a <: každý program, ktorý exportuje do XML ich samozrejme musí nahradzovať, ak má vytvoriť platný XML súbor. A ešte som predpokladal, že ten váš element text:p neobsahuje ďalšie elementy (ale nemusí to tak byť, netuším, aký formát má OO).

    Takže, aby som to zhrnul, neviem, prečo vám práve toto funguje a nie to predtým (re.findall…), lebo pre OO by mali byť tie programy ekvivaltné. Snáď len že máte nejakú staršiu verziu pythonu, ale to by musela byť veľmi stará, lebo AFAIK regexy sa naposledy poriadne menili niekedy v 1.5.2 a potom v 2.0 pridaním Unicode :-/
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    6.8.2006 12:36 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    lebo AFAIK regexy sa naposledy poriadne menili niekedy v 1.5.2 a potom v 2.0 pridaním Unicode :-/
    Do 2.4 byly přidány nějaké konstrukce, ale ty je zde stejně nepoužíváš ;-)
    When your hammer is C++, everything begins to look like a thumb.
    Marek Bernát avatar 6.8.2006 13:29 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Presne tak. AFAK boli pridané len flagy pre findall. Alebo ešte niečo iné?
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    6.8.2006 14:22 misterlister | skóre: 12 | blog: aiyyo
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Jojo, ten výraz chápu, spíš mi nedošlo, že díky tomu, že je to XML, tak to OO.o nutně nahrazuje a proto mě ani nenapadlo ten výraz napsat. Každopádně díky za vysvětlení.
    6.8.2006 12:42 lefti | skóre: 18 | blog: OneAndOnlyTrueBlog
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    A vite jak nahradit "jakykoliv znak krome" za "jakoukoliv sekvenci znaku krome"?
    Marek Bernát avatar 6.8.2006 00:49 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Hm, vlastne mi funguje aj toto vaše. Mal som to skúsiť, kým som dával nový post.

    Takže môj menovec má asi ešte nejaký iný problém :-)
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Vojta Drbohlav avatar 6.8.2006 14:29 Vojta Drbohlav | skóre: 26 | blog: Blog | Strahov
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    To moje funguje trošku jinak než to tvoje, alespoň mně ;-)
    5.8.2006 22:12 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Tak tohle:
    buňek
    si dokážu vysvětlit jen pokročilou hodinou ;-) Jinak pěkný skriptík.
    θηριον ειμι
    5.8.2006 22:32 misterlister | skóre: 12 | blog: aiyyo
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Já ani tou hodinou :-)
    alblaho avatar 6.8.2006 00:22 alblaho | skóre: 17 | blog: alblog
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Cože? Skriptík, který vypisuje mrtvé duše v ODS?-)
    Jardík avatar 6.8.2006 13:58 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Promiň, že se ptám, ale ty ten soubor pak nezavíráš?? Možná to teda udělá python sám při ukončení skriptu, ale je lepší ho zavírat.
    Věřím v jednoho Boha.
    6.8.2006 14:24 misterlister | skóre: 12 | blog: aiyyo
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Přesně tak, python to dělá sám a tak se tím v určitých případech netrápím - pokud otevírám soubory pouze pro čtení. Kdybych zapisoval, samozřejmě bych tam close() napsal, ale v tomto případě to považuji za zbytečné.
    Marek Bernát avatar 6.8.2006 14:30 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Prečo by to malo byť lepšie? Ak ten program za behu padne, tak AFAIK o uzavretie file descriptov sa postará kernel. Ak ten program nepadne, tak sa o to postará python. A z toho súboru sa len číta, takže sa nestratia žiadne dáta.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    Heron avatar 6.8.2006 14:43 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Minimálně to patří ke slušnosti a dobrému stylu programování - zavřít každý soubor a síťové sockety, uvolnit veškerou vyžádanou pamět a u OOP zničit vytvořené objekty (pokud to jazyk umožňuje). Zabráníte si tak potížím při rozšířením programu - za půl roku budete těžce hledat, proč se ta data neukládájí.
    6.8.2006 14:56 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Ba jemnosti, ta dnešní programátorská mládež jen prasí. Kde jsou ty zlaté časy, kdy se všechno psalo do čtyř sloupečků: v prvním labely, v druhém instrukce, ve třetím parametry a ve čtvrtém komentář. Dnes je to samý "to za mě udělá OS" a ze zdrojáků je blivno :-D :-D :-D
    θηριον ειμι
    6.8.2006 14:59 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    No jo. Je fakt, že vynechat v desetiřádkovém skriptu smetí na dalších pět řádek, za to by se mělo střílet :-)
    Copak toho není dost?
    Marek Bernát avatar 6.8.2006 16:21 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Príliš zovšeobecňujete. Ak píšem v asm, tak používam iné idiómy, ako v C++, iné ako v pythone a iné ako v lispe.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    7.8.2006 01:53 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Proto jsem tam napsal ty tri smajliky ;-) Samozrejme, ze dobry programatorsky styl je nutny nejen pro ty, kteri to po mne budou cist, ale i pro autora samotneho a ze styl zapisu kodu se odviji od syntaxe jazyka, ale to neznamena, ze si nemuzeme nostalgicky zavzpominat na uhledne zdrojaky assembleru :-D
    θηριον ειμι
    Marek Bernát avatar 7.8.2006 10:06 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Tri smajlíky sú málo, ak chcete urážať dnešnú programátorskú mládež. Tá na PHP nedá dopustiť :-)

    Náhodou, videl som už dosť assembleru, ktorý sa dá nazvať všeličím, ale určite nie úhľadným. Ale o to je väčšia zábava to dešifrovať. Ak to teda robíte zo zábavy a nie z pracovnej náplne :-)

    Inak, aj v dnešnej dobe sa dá dosť assembleru vidieť vo vertex a fragment programoch. Shading jazyky ho síce už vytláčajú, ale časy assembleru určite nie sú ešte zabudnuté :-)
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    7.8.2006 19:20 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    No to já zase programátorskou mládež klidně urazím, protože se do ní zatím počítám taky (pravda 21 let taky už není tak úplně mládí ;-), ale na monitor ještě vidím). A na PHP nedám dopustit v žádném případě ;-). V PHP5 už máme konečně pěkně řešené objekty, na webové aplikace je to balada :-D. Ale kód PHP skriptů musí být samozřejmě také vzorně upraven, jako zdrojáky v céčku.

    A psaní vertex/fragment programů v assembleru mi bohužel uteklo minulý semestr. V přednášce o OpenGL už nezbyl čas :-/ Jo, kde jsou ty časy, kdy jsem si psal zdrojáky v QBasicu do bločku, abych to pak mohl ve škole v hodině informatiky otestovat na jednom ze čtyř tehdy nejlepších strojů, co škola vlastnila: pentium, tuším něco kolem 100MHz...
    θηριον ειμι
    Marek Bernát avatar 6.8.2006 16:17 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Dobrý štýl programovania? Nedajte sa vysmiať. Dobrý štýl programovanie je
    (defun save-db (filename)
      (with-open-file (out filename
    		       :direction :output
    		       :if-exists :supersede)
        ; sprav nieco so suborom out))
    
    Alebo inak povedané, poriadny jazyk, kde nič ako zatváranie súborov nemusíte robiť. Rovnaká vec má pribudúť aj v pythone 2.5.

    To, čo vy nazývate dobrým štýlom, sú idiómy nižších jazykov, ako je python a rozhodne ich netreba dogmaticky pchať všade.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    6.8.2006 18:59 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Rovnaká vec má pribudúť aj v pythone 2.5.
    Huráá, Python bude mít makra! :-)
    Marek Bernát avatar 6.8.2006 19:45 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    :-)

    Len tak na okraj, pribudne konštrukcia with, využívajúca nové vlastnosti generátorov a bude sa dať ľubovoľnému objektu povedať, že čo s ním má with spraviť. Teda napríklad súbor bude vedieť, že po skončení bloku sa má zavrieť, thread bude vedieť, že na with bloku je lock, apod. Pekné ale je, že kým v lispe napísanie vlastného with trvá 5 minút a dá sa to už 4O rokov, tak v pythone treba navrhnúť PEP, teba diskutovať, schváliť a po pár mesiacoch(až rokoch) je nová konštrukcia :-) Ale stále lepšie ako Java s JSR, kde užitočné veci pribúdajú ešte pomalšie, nehovoriac o tom, že to nie je prístupné komunite :-(
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    6.8.2006 22:41 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Taky jsem to myslel ironicky... ;-) Škoda každé zbytečné fíčury navíc. (Toto není myšleno ironicky... ;-))
    Marek Bernát avatar 7.8.2006 00:04 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Skript vypisující duplicitní buňky v .ods
    Myslel som si, ale bolo to pre prípadných náhodných okoločítajúcich.

    To, čo ste povedali vy, sa týka skôr Perlu, ak už chceme vybrať jazyk, ktorý vznikol zliepaním fičúr.

    A na opačnej strane stoja akademické jazyky s minimálnym feature-set, kde sa prakticky nedá programovať.

    Ja som oveľa radšej, že python ide zlatou strednou cestou a má generátory, dekorátory, množiny a ďalšie srandičky, ktoré by tam nemuseli byť. Podľa mňa si je Guido veľmi dobre vedomý toho, že jazyk, ktorý nemá makrá, sa dá vylepšovať len za cenu toho, že bude menej čistý a snaží sa pridávať len veci, ktoré sú dosť abstraktné na použitie v mnohých prípadoch (ako napríklad to with), takže sa ich oplatí pridať. A PEPy komentujú skúsení hackeri, takže nemám o budúcnosť pythonu obavy.
    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.