Trovare dati in un testo

di il
4 risposte

Trovare dati in un testo

Salve,
avrei bisogno di estrarre informazioni da un testo, ad esempio in un testo del genere:
volume:2lt,massa:1kg*10^4;pressione:1atm

a me serve far riconoscere al programma che quello che sta printando sia la massa, che ne so, gli chiedo di scrivermi la massa e lui mi scrive 1*10^4kg, ovviamente deve funzionare con testi diversi e con dati in disordine.

4 Risposte

  • Re: Trovare dati in un testo

    borgobi ha scritto:


    Salve,
    avrei bisogno di estrarre informazioni da un testo, ad esempio in un testo del genere:
    volume:2lt,massa:1kg*10^4;pressione:1atm

    a me serve far riconoscere al programma che quello che sta printando sia la massa, che ne so, gli chiedo di scrivermi la massa e lui mi scrive 1*10^4kg, ovviamente deve funzionare con testi diversi e con dati in disordine.
    Innanzitutto bisogna vedere la generalizzazione del formato. Dal quanto vedo sono tante coppie nome:valore (":" come separatore) e ciascuna coppia è separata dall'altra con un altro separatore, che però dall'esempio in un caso è "," e nell'altro è ";" (è un errore? o no?).

    Detto questo, le soluzioni sono svariate: dall'utilizzo basilare di indexOf/substring delle stringhe, fino all'uso un po' più avanzato delle espressioni regolari. Dipende molto anche dalle tue competenze ed eventualmente dai requisiti (se si tratta es. di un "esercizio").

    Ah, chiaramente una espressione 1kg*10^4 non è "parsabile" direttamente da Java. Se vuoi arrivare ad avere un valore 10000 che indica i kg, ovviamente serve un po' di "logica" applicativa per farlo.
  • Re: Trovare dati in un testo

    andbin ha scritto:


    borgobi ha scritto:


    Salve,
    avrei bisogno di estrarre informazioni da un testo, ad esempio in un testo del genere:
    volume:2lt,massa:1kg*10^4;pressione:1atm

    a me serve far riconoscere al programma che quello che sta printando sia la massa, che ne so, gli chiedo di scrivermi la massa e lui mi scrive 1*10^4kg, ovviamente deve funzionare con testi diversi e con dati in disordine.
    Innanzitutto bisogna vedere la generalizzazione del formato. Dal quanto vedo sono tante coppie nome:valore (":" come separatore) e ciascuna coppia è separata dall'altra con un altro separatore, che però dall'esempio in un caso è "," e nell'altro è ";" (è un errore? o no?).

    Detto questo, le soluzioni sono svariate: dall'utilizzo basilare di indexOf/substring delle stringhe, fino all'uso un po' più avanzato delle espressioni regolari. Dipende molto anche dalle tue competenze ed eventualmente dai requisiti (se si tratta es. di un "esercizio").

    Ah, chiaramente una espressione 1kg*10^4 non è "parsabile" direttamente da Java. Se vuoi arrivare ad avere un valore 10000 che indica i kg, ovviamente serve un po' di "logica" applicativa per farlo.
    Beh, usando le "api" di wikipedia, ci son tanti caratteri diversi, cambiando esempio, metti di dover far trovare la massa di cerere da qui: è proprio un bel casino dato che ci son diversi caratteri. Qui la massa viene scritta come "massa={{M|9,43|e=20|k|g}}".
    Dati gli innumerevoli caratteri di spaziatura che ci sono, eccetera, non son riuscito (ancora) a cavarne piede
  • Re: Trovare dati in un testo

    borgobi ha scritto:


    Beh, usando le "api" di wikipedia, ci son tanti caratteri diversi, cambiando esempio, metti di dover far trovare la massa di cerere da qui: è proprio un bel casino dato che ci son diversi caratteri. Qui la massa viene scritta come "massa={{M|9,43|e=20|k|g}}".
    Dati gli innumerevoli caratteri di spaziatura che ci sono, eccetera, non son riuscito (ancora) a cavarne piede
    Il documento generale è JSON e per questo esistono librerie di parsing apposite. Ma per quel valore stringa associata alla chiave "*" in un oggetto nell'array sotto "revisions" ..... beh, è molto, MOLTO più complicato.
    Semplicemente perché quello è il documento intero della pagina che usa il linguaggio di "markup" di Wikipedia, quindi non sono solo dati "strutturati" ma testo complesso e con formattazioni arbitrarie.
  • Re: Trovare dati in un testo

    andbin ha scritto:


    borgobi ha scritto:


    Beh, usando le "api" di wikipedia, ci son tanti caratteri diversi, cambiando esempio, metti di dover far trovare la massa di cerere da qui: è proprio un bel casino dato che ci son diversi caratteri. Qui la massa viene scritta come "massa={{M|9,43|e=20|k|g}}".
    Dati gli innumerevoli caratteri di spaziatura che ci sono, eccetera, non son riuscito (ancora) a cavarne piede
    Il documento generale è JSON e per questo esistono librerie di parsing apposite. Ma per quel valore stringa associata alla chiave "*" in un oggetto nell'array sotto "revisions" ..... beh, è molto, MOLTO più complicato.
    Semplicemente perché quello è il documento intero della pagina che usa il linguaggio di "markup" di Wikipedia, quindi non sono solo dati "strutturati" ma testo complesso e con formattazioni arbitrarie.
    Beh si, fosse stato come hai detto tu nome:valore nome:valore, non avrei manco scritto.
    Oltre fare altre ricerche online in inglese con scarsi risultati non so che fare :/
Devi accedere o registrarti per scrivere nel forum
4 risposte