Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [Python] aiuto con regular expression

    Ciao,

    sono abbastanza nuovo di Python e delle Regex e, per una piccola applicazione che avrei in mente di realizzare per esercitarmi ho bisogno di aiuto in quanto non riesco a capire l'errore (se c'è).

    Ciò che deve fare l'applicazione è prendere in input del testo (una stringa) di codici come l'esempio: "OD1323,OB1242 TH32; OF2321"

    si tratta di termini, non in ordine, in formato alfanumerico, di lunghezza diversa e separate con punteggiatura diversa o spazi (ovviamente questo è il caso peggiore: non voglio vincolare l'input ad uno schema di immissione ben preciso).

    Ciò che deve fare il programma è riordinare alfabeticamente la sequenza e stamparla con i termini separati da un operatore a scelta dell'utente (spazio, virgole, punti).

    L'applicazione è abbastanza banale e per quanto riguarda l'elaborazione dei dati e l'output sono abbastanza sicuro. mi sono bloccato nella scansione della stringa, per la quale pensavo di utilizzare una regex.

    il codice a cui sono arrivato al momento è il seguente:

    codice:
    >>> import re
    >>> stringa = "OD1323,OB1242 TH32; OF2321" 
    >>> result = re.findall(r'\b\w*\b',stringa) 
    >>> print result 
    ['OD1323', '', 'OB1242', '', 'TH32', '', 'OF2321', '']
    come si può notare la lista di output fornisce il risultato sperato. tuttavia vorrei eliminare i risultati '' che non capisco da dove vengano fuori...
    ho provato a cercare una soluzione con le regex ma senza successo. ho provato anche con list.remove() ma non riconosce il carattere: ''.

    grazie mille per l'aiuto.
    ciao!

  2. #2

    RISOLTO

    per chi fosse interessato, posto la soluzione al problema...

    nel pattern di ricerca basta sostituire il codice \w* con \w+.

    il codice diventa quindi:

    codice:
    >>> import re 
    >>> stringa = "OD1323,OB1242 TH32; OF2321" 
    >>> result = re.findall(r'\b\w+\b',stringa)
    e fornisce come risultato l'array desiderato:

    codice:
    >>> print result 
    ['OD1323', 'OB1242', 'TH32', 'OF2321']
    senza gli spazi vuoti '', inclusi a causa del \w* = "trova 0 o più soluzioni", mentre il pattern corretto era \w+ = "trova 1 o più soluzioni".

    ciao!

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.