Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15

    Linguaggio Python - Stringhe

    Ciao a tutti! Ho un problema sulla comprensione di questo codice.
    Richiesta: "Scrivere una funzione modificaCase(fin, fout) che copia il file di ingresso fin nel file di uscita fout, contando tutte le occorrenze di casa che diventano casa1, casa2, casa 3"
    Quindi avendo un file di ingresso fin:
    ciao
    come
    stai
    casa
    tutto
    casa
    Il file di uscita fout dovrà essere:
    ciao
    come
    stai
    casa1
    tutto
    casa2

    Il codice è il seguente, e funziona perfettamente:

    codice:
    import re
    def modificaCase(file_in,file_out):
        p=open(file_in, "r", encoding="utf-8").read()
        fout=open(file_out,"w",encoding="utf-8")
        i=1
        while  re.search('\Wcasa\W',p):
            print(i)
            s=re.search('\Wcasa\W',p)
            p=p[:s.start()+5]+str(i)+p[s.start()+5:len(p)]
            i=i+1
        print(p,file=fout)    
        fout.close()
    Quello che non riesco a capire è la riga di codice:
    codice:
    p=p[:s.start()+5]+str(i)+p[s.start()+5:len(p)]
    Chi è così gentile da spiegarmela passo passo?
    Grazie
    Ultima modifica di MItaly; 08-12-2013 a 16:36 Motivo: Tag

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    151
    Ciao!

    Quella riga modifica la variabile p facendola riferire ad un nuovo oggetto (stringa) costruito cosí:
    1) La stringa comincia con:
    p[:s.start() +5] #ovvero uno slice della stringa p: questo slice include la sub-stringa che va dall'inizio fino all'incontro del pattern definito in re.search + 5 caratteri, ovvero '\Wcasa\W' (cioé la parola "casa" tra due caratteri non alfanumerici).
    2) poi ci aggiunge
    str(i) #ovvero il numero intero a cui si riferisce i, ma in forma di stringa (per poter usare l'operatore + sennó con un int dá errore)
    3) infine aggiunge
    p[s.start()+5:len(p)] #ovvero il resto della stringa p.

    Quindi praticamente prende la stringa p e, dopo la parola "casa", ci infila il numero definito da i.

    ...Secondo me

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    15
    Credo di aver capito, ti ringrazio!

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.