Profilo di Idle

Nome Idle
Indirizzo email lsp@posteo.net
AvatarAvatar utenti
Messaggi9
  • Re: Regex e parole unite da simboli
    Forum >> Principianti
    Grazie del suggerimento: funziona.

    testo = 'x-x-x y'
    re.split(r'[\W+]*\s+[\W+]*', testo)
    >>> ['x-x-x', 'y']


  • [risolto] Regex e parole unite da simboli
    Forum >> Principianti
    Buongiorno e buona domenica,

    dato un testo:

    testo = 'x-x-x y'


    vorrei elaborare una regex che trovi ogni parola.
    Lo scopo è quello di considerare parola unica tutte quelle unite da simboli, tipo apostrofi e trattini, come fanno i programmi di videoscrittura.
    Le mie basilari conoscenze di Python mi suggeriscono solo una regex del genere:

    (r'[\w+]*\W+[\w+]*', testo)


    ma questa mi restituirebbe:

    ['x-x', '-x', ' y']


    Come potrei modificare la regex in modo che restituisca correttamente tutte le parole a prescindere dalla loro lunghezza, eliminando anche i caratteri di spaziatura?

    Grazie.



    --- Ultima modifica di Idle in data 2019-01-13 08:53:42 ---

    --- Ultima modifica di Idle in data 2019-01-13 08:55:05 ---

    --- Ultima modifica di Idle in data 2019-01-13 08:56:20 ---

    --- Ultima modifica di Idle in data 2019-01-13 15:11:46 ---
  • Re: [risolto] Contare solo alcune ricorrenze di parole in un testo
    Forum >> Principianti
    Approfondirò il metodo filter, che conosco solo superficialmente.
    Grazie e buon anno anche a te e a tutti i membri del Forum.



    --- Ultima modifica di Idle in data 2019-01-05 18:36:18 ---
  • Re: Contare solo alcune ricorrenze di parole in un testo
    Forum >> Principianti
    Ho trovato una soluzione che mi sembra ancora più semplice e che posto per chi avesse il mio stesso problema.
    Una volta contate tutte le parole usate presenti nella lista, con la funzione Counter che crea un dizionario, prima faccio una copia del dizionario con copy() e poi rimuovo dalla copia le parole inferiori a un certo numero di ricorrenze con questo metodo:
    for k, v in ParoleUsate2.items():
            if v < 3:
                del ParoleUsatek

    Quindi la copia del dizionario restituirà e stamperà solo le parole ricorrenti almeno 3 volte, o un altro numero che volessi indicare.



    --- Ultima modifica di Idle in data 2018-12-31 14:37:08 ---

    --- Ultima modifica di Idle in data 2018-12-31 14:37:17 ---
  • Re: Contare solo alcune ricorrenze di parole in un testo
    Forum >> Principianti
    Grazie ancora, il tuo suggerimento mi ha aiutato.
    Avendo poca padronanza del linguaggio, che provo ad applicare man mano che studio, mi è difficile essere fantasioso perché possiedo poche nozioni tra cui poter scegliere.
    Spero di migliorare col tempo.
    Ciao.

  • Re: Contare solo alcune ricorrenze di parole in un testo
    Forum >> Principianti
    Ciao Daniele,
    grazie della risposta.
    Conosco questi metodi, ma nessuno fa al caso mio, in quanto avrei bisogno di contare solo le parole che superino un dato minimo di occorrenze.
    Ad esempio, considerato come minimo di occorrenze 4, nel testo:

    "mela mela mela mela pera pera pera"

    vorrei poter ottenere solo:

    "mela".
  • [risolto] Contare solo alcune ricorrenze di parole in un testo
    Forum >> Principianti
    Buongiorno,
    dato un file di testo, vorrei contare le ricorrenze delle parole superiori a un certo minimo, ad esempio tutte le quelle ricorrenti da 4 volte in su.
    Gli unici metodi che mi vengono in mente per questo tipo di analisi sono l'uso di regex con findall e quello di Counter da collections, con un codice del genere:

    def Parole():
     
        ParoleUsateLista = []
        Ricerca = re.findall(r'\w+', FileTesto)
        
        for n in Ricerca:
                ParoleUsateLista.append(n)
        
        ParoleUsate = Counter(ParoleUsateLista)

    Se non mi sfugge qualcosa, con findall si può indicare solo la lunghezza minima delle parole da considerare [es. re.findall(r'\w{3,}, FileTesto)] e con Counter se ne possono restituire solo alcune fra quelle trovate [es. Counter(ParoleUsateLista).most_common(10)].

    Come posso ottenere il risultato desiderato?
    Grazie.


    --- Ultima modifica di Idle in data 2018-12-31 14:37:59 ---
  • Re: Valore di variabile globale non riconosciuto dalle funzioni
    Forum >> Principianti
    Ti ringrazio del suggerimento: funziona.
    Quello che non capisco è perché questo problema si è presentato solo in relazione a una regex, ma non con altri metodi di lettura e analisi del file.
    Cercherò di venirne a capo partendo dalla soluzione.
    Ciao.









    --- Ultima modifica di Idle in data 2018-12-26 17:51:18 ---
  • [risolto] Valore di variabile globale non riconosciuto dalle funzioni
    Forum >> Principianti
    Buongiorno e buone feste.
    Sono iscritto da un po' al Forum e di solito mi limito a leggervi, ma ora vorrei chiedervi aiuto per risolvere un problema di cui non riesco a venire a capo, malgrado ore di tentativi.
    Per testare le conoscenze di Python durante lo studio, scrivo dei piccoli programmi.
    Uno in particolare dovrebbe analizzare i testi, usando anche le regex.

    Dato un file con testo:

    Uno. Due. Tre.

    Quattro.


    il programma dovrebbe aprirlo e restituire il numero di righe, di capoversi e di periodi.

    Il codice è il seguente:

    import re
    
    def Avvio():
        global Testo
        Testo = open('Testo.txt', 'r')
    
    def Righe():
       
        global Righe
        global RigheTotale
        Righe = []
        for n in Testo.read().splitlines():
            Righe.append(n)
        RigheTotale = len(Righe)
           
    def Capoversi():
       
        global CapoversiTotale
        CapoversiTotale = Righe.count('')
    
    def Periodi():
      
        global PeriodiTotale
        Testo2 = str(Testo.readlines())
        Periodi1 = re.findall(r'[.\$]', Testo2)
        PeriodiTotale = len(Periodi1)
    
    Avvio()
    Righe()
    Capoversi()
    Periodi()
    
    print('RIGHE: ', RigheTotale)
    print('CAPOVERSI: ', CapoversiTotale)
    print('PERIODI: ', PeriodiTotale)

    Righe e Capoversi li conta correttamente (3 e 1), ma per i Periodi restituisce 0.
    Se invece antepongo la funzione Periodi() a Righe() e Capoversi(), conta correttamente i 4 Periodi, ma restituisce 0 per Righe e Capoversi.
    È come se la chiamata di una funzione relativa alla variabile globale Testo ne modificasse il contenuto, che diventa nullo per le funzioni successive.
    Dove sbaglio?
    Grazie a chi vorrà aiutarmi.



    --- Ultima modifica di Eric Idle in data 2018-12-26 12:59:42 ---

    --- Ultima modifica di Eric Idle in data 2018-12-26 13:00:00 ---

    --- Ultima modifica di Eric Idle in data 2018-12-26 13:02:32 ---

    --- Ultima modifica di Idle in data 2018-12-26 17:52:20 ---