Forum
>>
Principianti
>>
analizzare file
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da Lime_In_The_Coconut |
2016-11-06 19:04:04 - analizzare file
|
Ciao a tutti,
sto creando una funzione che prende in ingresso un file e un elemento e stampa le righe del file dove e' contenuto l'elemento in questione piu' il numero delle volte trovato il problema e' che non funziona con tutte le parole nel file, ad esempio di un qualsiasi file non stampa la prima parola della prima riga. Questo e' il codice: def ricerca_elemento(file,elem): lista=[] f=open(file,encoding="UTF-8") s=f.readlines() print(s) count=0 for line in s: if elem in line: lista.append(line) count+=1 print(lista) print(count)probabilmente il codice si puo' scrivere meglio, pero' non capisco perche' alcune parole le rileva e altre no grazie in anticipo |
|
Scritto da Daniele aka Palmux |
2016-11-06 22:10:01 - Re: analizzare file
|
Senza avere il modo di provare il tuo script, sono su una piattaforma a me aliena, ad occhio mi sembra che non ci siano macroscopici errori. Considera però che la mia cena è stata impegnativa a livello alcolico e rivedere la grande bellezza in versione integrale per la seconda volta non sta aiutando il mio cervello in questo momento.
Vabbé torniamo a noi. Anche se ti consiglio di aprire il file in questo modo: with open(il_tuo_file) as f: ...fai cose...in modo da non preoccuparti della chiusura del file stesso, questo certo non inficia sulla lettura del file. Di default Python apre i file posizionando il cursore all'inizio del file e non certo saltando la prima parola. A questo punto non essendo la lama, forse è il manico. Controlla con attenzione sia il file che tenti di aprire, al limite postalo/allegalo/invialo/scrivilo che l'elem che passi, perché il comportamento è quantomai curioso. Leggi qui per maggiori dettagli sull'apertura del file. Aspetto tue notizie. Cya |
|
Scritto da Lime_In_The_Coconut |
2016-11-07 22:05:26 - Re: analizzare file
|
Ciao Daniele,
riposto innanzitutto il codice che ho modificato un po': def ricerca_elemento(file,elem): lista=[] with open(file,encoding="UTF-8",errors="replace") as f: s=f.readlines() print(s) count=0 for line in s: if elem.lower() in line: lista.append(line) count+=1 print(lista) print(count) finito=False while not finito: richiesta=input("Digita il nome del file: ") elemento=input("Digita elemento da cercare: ") ricerca_elemento(richiesta,elemento) s1=input("----Finisco? ") finito=s1.lower()=="si"Allora ho creato di nuovo un file di testo e stavolta funziona, stampa la prima riga se la parola cercata è all'inizio. Il problema è che nel file che ho creato (frasi.txt) la prima parola della prima riga è minuscola, e quindi funziona. quelle delle altri file invece iniziavano con la lettera maiuscola. I problemi però sono due: 1) con un elem.lower() non risolvo il problema 2) nel file frasi.txt se cambio la prima parola da tutto minuscolo a prima lettera maiuscola, e scrivo il termine da ricercare esattamente uguale (es: Cane) non trova nulla non so dove può essere la soluzione vi allego comunque il file, forse è un problema di codifica.. ho messo comunque una gestione degli errori perchè in alcuni file ho problemi, non in questo che ti allego Grazie mille ps io sto vedendo young pope, devo dire che è molto bello (un po' pesante come al solito, però fico) ciao |
|
Scritto da Daniele aka Palmux |
2016-11-08 01:34:22 - Re: analizzare file
|
No, metterlo solo su elem non ha senso.
Puoi ridurre tutti gli elementi con lower(), entrambe le stringhe, per verificarne poi la presenza. Hai anche la possibilità, essendo stringhe, di ricercare tutto con find(), fai qualche prova e vedi cosa ti soddisfa di più. Cya |
Pagina: 1
Esegui il login per scrivere una risposta.