abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 18:00 | IT novinky

    DuckDuckGo AI Chat umožňuje "pokecat si" s GPT-3.5 Turbo od OpenAI nebo Claude 1.2 Instant od Anthropic. Bez vytváření účtu. Všechny chaty jsou soukromé. DuckDuckGo je neukládá ani nepoužívá k trénování modelů umělé inteligence.

    Ladislav Hagara | Komentářů: 1
    včera 14:22 | IT novinky

    VASA-1, výzkumný projekt Microsoftu. Na vstupu stačí jediná fotka a zvukový záznam. Na výstupu je dokonalá mluvící nebo zpívající hlava. Prý si technologii nechá jenom pro sebe. Žádné demo, API nebo placená služba. Zatím.

    Ladislav Hagara | Komentářů: 2
    včera 04:44 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 140 (pdf) a HackSpace 77 (pdf).

    Ladislav Hagara | Komentářů: 0
    včera 01:00 | Nová verze

    ESPHome, tj. open source systém umožňující nastavovat zařízení s čipy ESP (i dalšími) pomocí konfiguračních souborů a připojit je do domácí automatizace, například do Home Assistantu, byl vydán ve verzi 2024.4.0.

    Ladislav Hagara | Komentářů: 0
    18.4. 22:11 | IT novinky Ladislav Hagara | Komentářů: 0
    18.4. 20:55 | Nová verze

    Neziskové průmyslové konsorcium Khronos Group vydalo verzi 1.1 specifikace OpenXR (Wikipedie), tj. standardu specifikujícího přístup k platformám a zařízením pro XR, tj. platformám a zařízením pro AR (rozšířenou realitu) a VR (virtuální realitu). Do základu se z rozšíření dostalo XR_EXT_local_floor. Společnost Collabora implementuje novou verzi specifikace do platformy Monado, tj. open source implementace OpenXR.

    Ladislav Hagara | Komentářů: 2
    18.4. 17:22 | Nová verze

    Byla vydána nová verze 0.38.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 4.4 nebo novější a také libplacebo 6.338.2 nebo novější.

    Ladislav Hagara | Komentářů: 13
    18.4. 17:11 | Nová verze

    ClamAV (Wikipedie), tj. multiplatformní antivirový engine s otevřeným zdrojovým kódem pro detekci trojských koní, virů, malwaru a dalších škodlivých hrozeb, byl vydán ve verzích 1.3.1, 1.2.3 a 1.0.6. Ve verzi 1.3.1 je mimo jiné řešena bezpečnostní chyba CVE-2024-20380.

    Ladislav Hagara | Komentářů: 2
    18.4. 12:11 | IT novinky

    Digitální a informační agentura (DIA) oznámila (PDF, X a Facebook), že mobilní aplikace Portál občana je ode dneška oficiálně venku.

    Ladislav Hagara | Komentářů: 10
    18.4. 05:11 | Komunita

    #HACKUJBRNO 2024, byly zveřejněny výsledky a výstupy hackathonu města Brna nad otevřenými městskými daty, který se konal 13. a 14. dubna 2024.

    Ladislav Hagara | Komentářů: 2
    KDE Plasma 6
     (68%)
     (11%)
     (2%)
     (20%)
    Celkem 566 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

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

    5.8.2006 21:21 | Přečteno: 872× | 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.