[python] Hledani v souboru

Petr Prikryl PrikrylP na skil.cz
Středa Červenec 13 07:42:42 CEST 2005


> potreboval bych najit zadany retezec v textovym 
> souboru. Jak to mam provest?

Pokud jde o krátký soubor a stačí pozice v bajtech,
pak stačí načíst obsah souboru do řetězcové proměnné
a použít její metodu find():

--------------------------------
fname = 'soubor.txt'
pattern = 'vzorek'

f = file(fname, 'rb')
content = f.read()
f.close()

index = content.find(pattern)

print index
print '-' * 70
--------------------------------

V tomto případě jsem použil binární režim
otvírání souboru. Při použití textového režimu se 
například pod Windows ohlásí chybná pozice, protože
se oddělení řádků převede z dvouznakového 
na jednoznakové.

Pokud by bylo potřeba číst třeba i dlouhý soubor
a zjistit číslo řádku a pozici, lze to udělat
takto:

--------------------------------
fname = 'soubor.txt'
pattern = 'vzorek'

f = file(fname)
lineno = 0
for line in f:
   lineno += 1
   pos = line.find(pattern) 
   if pos != -1:
       print lineno, pos
f.close()

print '-' * 70
--------------------------------

pepr



Další informace o konferenci Python