Come si cerca un file di testo per una frase chiave o una parola chiave e poi si stampa la riga in cui si trova la frase chiave o la parola chiave?Cerca in un file di testo e stampa linee correlate in Python?
risposta
searchfile = open("file.txt", "r")
for line in searchfile:
if "searchphrase" in line: print line
searchfile.close()
Per stampare più linee (in modo semplice)
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 virgola in print l,
impedisce spazi aggiuntivi di apparire in uscita; la dichiarazione di stampa finale delimita i risultati da linee diverse.
O meglio ancora (rubare indietro da 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
Con scuse a senderle che ho palesemente copiato.
+1. Ero infastidito - ma poi ho preso un momento per capire la frase con. È fantastico! – senderle
@senderle, grazie per quello. Ho preso in considerazione la possibilità di modificare la tua risposta, ma ho pensato che sarebbe stato ancora più noioso - e l'istruzione 'with' è un'aggiunta piuttosto recente a Python, rendendo la tua risposta la più appropriata per alcune persone. Hai ottenuto il mio +1 molto tempo fa! –
sì, una recente e per me, criptica, aggiunta, fino ad ora; Devo ammettere che avevo faticato a strappare la frase con alcune settimane fa ed era venuto fuori vuoto - ma questo semplice esempio lo spiega perfettamente. – senderle
Nota il potenziale per un indice di fuori intervallo con "i + 3". Potresti fare qualcosa del tipo:
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
Modifica: forse non necessario. Ho appena provato alcuni esempi. x [y] darà errori se y è fuori range, ma x [y: z] non sembra dare errori per i valori fuori range di y e z.
La slicing non produce errori fuori intervallo. Quando prendi una fetta, dici "dammi un elenco degli articoli in questo intervallo". Se non ci sono elementi nell'intervallo specificato, una lista vuota fornisce ciò che è stato chiesto. D'altra parte, l'indicizzazione dice "dammi l'oggetto esatto all'indice" i "." Se non ci sono elementi in 'i', restituire qualcosa - anche' None' - sarebbe una bugia, quindi è meglio sollevare un'eccezione. – senderle
- 1. Cerca stringa nel file di testo C
- 2. Conteggio di linee, parole e caratteri all'interno di un file di testo usando Python
- 3. XCode - cerca testo in tutti i file
- 4. testo Cerca in Linq
- 5. Haskell Stampa linee in funzione
- 6. Cerca e sostituisci più righe in file xml/di testo usando python
- 7. Combinare le linee da un file di testo in Unix?
- 8. come contare il numero totale di linee in un file di testo utilizzando python
- 9. Estrarre dati da linee di un file di testo
- 10. combinare più file di testo in un unico file di testo utilizzando python
- 11. Rimuovere le linee da file di testo con Python
- 12. Cerca il file di testo e visualizza i risultati in un JPanel
- 13. Trova e stampa linee in un file che corrisponde esattamente a string o regexp (Ruby)
- 14. Cerca duplicato nel file di testo locale
- 15. Cerca e ottieni una riga in Python
- 16. Scrivere un dizionario in un file di testo in python
- 17. Cerca dalla fine del file in python 3
- 18. Linee di lettura oltre SUB in Python
- 19. stampa Tutte le chiavi di un file json in python
- 20. Algoritmo per trovare le parole correlate in un testo
- 21. legge un file di testo e cerca una stringa in Android
- 22. Cerca file in una cartella
- 23. Aggiungi un testo al file in Python
- 24. Cerca file in Xcode
- 25. Istogramma di stampa come linee
- 26. Cerca in tutti i file in WebStorm
- 27. Python 2.7: Stampa su file
- 28. Come inviare un lavoro di stampa alla stampante in python
- 29. Stampa di un DataTable di testo/file di testo in .NET
- 30. Confronto di due file di testo in python
chiude il file dopo l'elaborazione. – Rozuur
Come potrei stampare quella linea e altre tre linee sotto di essa? –
@Rozuur: abbastanza giusto. modificato. – senderle