Topic: Trovare una specifica riga in un file di testo  (Letto 84 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline lusirc

  • python unicellularis
  • *
  • Post: 6
  • Punti reputazione: 0
    • Mostra profilo
Trovare una specifica riga in un file di testo
« il: Novembre 18, 2020, 15:30 »
Ciao ragazzi, avrei bisogno di un aiutino, devo stampare a video quello che leggo in una specifica posizione di un file di testo,ma a volte la posizione può cambiare e non trovo più la riga interessata, ho scritto questo codice, ma va bene se il file di testo non vengono aggiunte altre righe. qualche soluzione? Ho provato anche con line.replace.
Grazie

fin = open("prova.txt")
          a = fin.readlines()
          b = str(a).split(" ")
          print (b[157])
          print (b[158])
          print (b[159])
          print (b[160])
          print (b[161])
          print (b[162])
          print (b[163])
          print (b[164])
          print (b[165])
          print (b[166])

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.144
  • Punti reputazione: 9
    • Mostra profilo
Re:Trovare una specifica riga in un file di testo
« Risposta #1 il: Novembre 18, 2020, 19:01 »
cicla sulle righe del file, una per una, finché non trovi quello che cerchi...

> Ho provato anche con line.replace
Perché?

Offline lusirc

  • python unicellularis
  • *
  • Post: 6
  • Punti reputazione: 0
    • Mostra profilo
Re:Trovare una specifica riga in un file di testo
« Risposta #2 il: Novembre 29, 2020, 09:58 »
cicla sulle righe del file, una per una, finché non trovi quello che cerchi...

> Ho provato anche con line.replace
Perché?
Ciao grazie, scusate il ritardo , con line.replace non è una soluzione per me, perché la linea che devo sostituire cambia ogni giorno, e quindi non so cosa trovare per cambiare.
Per il ciclo si può gestire per singola riga?

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 321
  • Punti reputazione: 0
    • Mostra profilo
Re:Trovare una specifica riga in un file di testo
« Risposta #3 il: Novembre 29, 2020, 11:06 »
la linea che devo sostituire cambia ogni giorno, e quindi non so cosa trovare per cambiare.
Se non hai criteri su cui agire, ben difficilmente puoi agire, mi sembra ... "al volo" mi pare sia la soluzione più ovvia.

Per il ciclo si può gestire per singola riga?

Certamente, un esempio "volante" e minimale, supponiamo di avere un file "apelle", così fatto:
NzP:~$ cat apelle
Apelle figlio di Apollo
fece una palla di pelle di pollo
e tutti i pisci vennero a galla
per vedere la palla di pelle di pollo
fatta da Apelle figlio di Apollo


Supponiamo, che vogliamo sostituire l'intera riga contenente "pisci", potremmo memorizzarci tutte le righe, quindi riscrivere il file, sostituendo solo quella riga, p.e. così

>>> with open('apelle', 'r') as f:
righe = f.readlines()
>>> new_riga = 'e tutti i pesci vennero a galla'
>>> with open('apelle', 'w') as f:
for r in righe:
if 'pisci' in r:
f.write(new_riga + '\n')
else:
f.write(r)


24
33
32
38
33
>>>

il risultato sarà
NzP:~$ cat apelle
Apelle figlio di Apollo
fece una palla di pelle di pollo
e tutti i pesci vennero a galla
per vedere la palla di pelle di pollo
fatta da Apelle figlio di Apollo
NzP:~$


Come detto, è un esempio minimale, se leggi la docs e fai delle prove troverai metodi migliori.

Ciao

Offline lusirc

  • python unicellularis
  • *
  • Post: 6
  • Punti reputazione: 0
    • Mostra profilo
Re:Trovare una specifica riga in un file di testo
« Risposta #4 il: Novembre 29, 2020, 19:45 »
la riga da modificare è questa, ma il valore 1000 cambia, e come dicevo per non editare sempre il file per vedere come si e aggiornato, volevo aggiornarlo direttamente dallo script con un nuovo valore, ho provato line.replace funziona , ma devo inserire la riga completa, e siccome il valore 1000 cambia non mi funziona.
prezzo_pomodoro_12=1000

ci provo grazie :)
« Ultima modifica: Novembre 29, 2020, 19:55 da lusirc »