Comment rechercher un mot-clé ou un mot-clé dans un fichier texte, puis imprimer la ligne dans laquelle se trouve ce mot-clé ou cette phrase-clé?
searchfile = open("file.txt", "r")
for line in searchfile:
if "searchphrase" in line: print line
searchfile.close()
Pour imprimer plusieurs lignes (de manière simple)
f = open("file.txt", "r")
searchlines = f.readlines()
f.close()
for i, line in enumerate(searchlines):
if "searchphrase" in line:
for l in searchlines[i:i+3]: print l,
print
La virgule dans print l,
empêche les espaces supplémentaires d'apparaître dans la sortie; l'instruction de fin d'impression délimite les résultats de différentes lignes.
Ou mieux encore (en revenant à Mark Ransom):
with open("file.txt", "r") as f:
searchlines = f.readlines()
for i, line in enumerate(searchlines):
if "searchphrase" in line:
for l in searchlines[i:i+3]: print l,
print
with open('file.txt', 'r') as searchfile:
for line in searchfile:
if 'searchphrase' in line:
print line
Toutes mes excuses à senderle que j'ai copié de façon flagrante.
Notez le potentiel d'un indice hors plage avec "i + 3". Vous pourriez faire quelque chose comme:
with open("file.txt", "r") as f:
searchlines = f.readlines()
j=len(searchlines)-1
for i, line in enumerate(searchlines):
if "searchphrase" in line:
k=min(i+3,j)
for l in searchlines[i:k]: print l,
print
Edit: peut-être pas nécessaire. Je viens de tester quelques exemples. x [y] donnera des erreurs si y est hors limites, mais x [y: z] ne semble pas donner d'erreurs pour les valeurs hors limites de y et z.