[python] odstraneni radku v souboru

Petr Prikryl PrikrylP na skil.cz
Čtvrtek Říjen 6 13:27:10 CEST 2005


Ke geonovým radám přidám návrh jednoduchého řešení, 
které vychází z předpokladu, že v každé sekci stačí
eliminovat řádky, které už se v ní vyskytují. Využívá
se k tomu objekt typu množina:

====================================================
fin = file('vstup.txt')
fout = file('vystup.txt', 'w')

processed = set()     # prazdna mnozina jiz zpracovanych 

for line in fin:
    if line[0] not in '* \t':
        # Novy nazev souboru, zaciname sbirat dalsi sekci.
        fout.write(line)
        processed.clear()

    else:
        # Sbirame unikatni radky sekce.
        if line not in processed:
            processed.add(line)
            fout.write(line)

fin.close()
fout.close()
====================================================

geon...
> Neodpovím detailně, ale obecně: Soubory jsou "immutable", 
> tedy nemůžeš 
> je na místě změnit. Takže se to "obchází" asi takhle:
> 
> * načíst soubor do proměnné
> * proměnou upravit, změnit
> * smazat (zazálohovat) soubor
> * proměnnou uložit do souboru.
> 
> Modifikace jsou možné, třebas u dlouhého souboru postupné načítání a 
> zpracovávání do řetězce, a pak to je již stejné.
> Nebo ti šlo koknrétně o to, jak nastavit if aby ti to vybíralo to co 
> chceš? Nebo snad tvorba názvů souborů?
> 
> Jinak doporučuje také wiki, možná se ti bude hodit 
> http://www.py.cz/HledaniRetezce
> Ahoj
> geon
> 
> Martin Jedlička napsal(a):
> 
> > Zdravim,
> >  
> >    mel bych takovy dotaz. Mam soubor, ktery obsahuje napr. toto:
> >  
> > *nazev souboru1*
> >  * 1.2:
> >      KOD-01-01-01-14
> >  * 1.2:
> >      KOD-01-01-01-13
> >  * 1.1.1.1:
> >      KOD-01-01-01-01
> > *nazev souboru1*
> >  * 1.1.1.1:
> >      KOD-01-01-01-14
> >  * 1.1.1.1:
> >      KOD-01-01-01-13
> >  * 1.1.1.1:
> >      KOD-01-01-01-01
> > a potreboval bych odstranit nadbytecne radky, ktere obsahuji stejna 
> > cisla za hvezdickou (ktere se uz vyskytlo), tak aby se tam 
> zustal vzdy 
> > jen ten prvni radek s prvnim cislem. Toto by se melo 
> provest vzdy pro 
> > kazdy ten blok zacinajici *nazev souboru1-n*. Melo by to vypadat v 
> > konecne verzi takto:
> >  
> > *nazev souboru1*
> >  * 1.2:
> >      KOD-01-01-01-14
> >      KOD-01-01-01-13
> >  * 1.1.1.1:
> >      KOD-01-01-01-01
> > *nazev souboru1*
> >  * 1.1.1.1:
> >      KOD-01-01-01-14
> >      KOD-01-01-01-13
> >      KOD-01-01-01-01
> > jak to mam udelat?
> >  
> > diky moc za kazdou radu.
> >  
> > Martin
> >  
> >
> >-------------------------------------------------------------
> -----------
> >
> >_______________________________________________
> >Python mailing list
> >Python na py.cz
> >http://www.py.cz/mailman/listinfo/python
> >
> 
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
> 
> 



Další informace o konferenci Python