[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