none
[VB2013] - Determinare delimitatore CSV RRS feed

  • Domanda

  • Ciao,

    ho molti files CSV provenienti da varie fonti e il mio problema è di determinare il carattere separatore (in un file è la virgola, in un altro è il punto e virgola ecc)... inoltre all'interno ci sono anche dei numeri con relative virgole e punto delle migliaia.

    Il problema è che a priori non so quale delimitatore sia e non posso di certo aprirli tutti :-(

    Come posso fare?

    Grazie mille

    Ciao BlackSun

    giovedì 15 maggio 2014 08:58

Risposte

  • Ciao BlackSun1971,

    avere un file con delimitatore di testo uguale al separatore decimale significa avere un file inutilizzabile salvo conoscerne l'esatto tracciato record (es <testo><testo><numero senza decimali><numero con decimali><testo> ecc.) e procedere con una parsing manuale carattere per carattere. Ache se la vera soluzione è buttare questo file e generare/far generare un file leggibile!

    Ciao


    Renato Marzaro  MVP Visual Basic

    http://community.visual-basic.it/renato

    • Contrassegnato come risposta Anca Popa venerdì 6 giugno 2014 12:55
    sabato 17 maggio 2014 09:42
    Moderatore
  • Ciao BlackSun,

    In alternativa, potresti trovare un modo per decidere quale sia il delimitatore specifico ad ogni file.

    Per esempio, prima di cominciare a lavorare su un file, potresti ispettare la prima riga e trovare il delimitatore, in base a delle regole da te create. E' chiaro che i numeri che presentano diversi formati ti possono dare un po' fastidio, ma una regola che sia generalmente valabile non dovrebbe essere troppo difficile a trovare (ad esempio, il delimitatore può essere uno dei caratteri "virgola" o "punto e virgola" che appare più volte sulla riga).


    <QUESTO CONTENUTO È DISTRIBUITO "AS IS", ESCLUDENDO OGNI FORMA DI RESPONSABILITÀ DI QUALUNQUE GENERE, ESPLICITA O IMPLICITA>

    Grazie
    Il Supporto delle Comunità MSDN

    Vi preghiamo di ricordare a “Segnare come Risposta” i post che risolvono il vostro problema. Questa è di solito una modalità di riconoscimento verso chi vi ha aiutati, facilitando per il futuro la scoperta della risoluzione per gli altri visitatori.



    • Modificato Irina Turcu venerdì 16 maggio 2014 09:57
    • Contrassegnato come risposta Anca Popa venerdì 6 giugno 2014 12:54
    venerdì 16 maggio 2014 09:56

Tutte le risposte

  • Bhe puoi decidere quale usare e sostituire gli altri con il metodo replace...
    giovedì 15 maggio 2014 13:29
  • Ciao,

    non è troppo rischioso visto che ci sono anche dei campi con numeri decimali?

    Ciao BlackSun

    giovedì 15 maggio 2014 14:14
  • bhe metti un if se prima e dopo il delimitatore c'è un valore numerico, salti

    ciao

    giovedì 15 maggio 2014 14:17
  • Ciao BlackSun,

    In alternativa, potresti trovare un modo per decidere quale sia il delimitatore specifico ad ogni file.

    Per esempio, prima di cominciare a lavorare su un file, potresti ispettare la prima riga e trovare il delimitatore, in base a delle regole da te create. E' chiaro che i numeri che presentano diversi formati ti possono dare un po' fastidio, ma una regola che sia generalmente valabile non dovrebbe essere troppo difficile a trovare (ad esempio, il delimitatore può essere uno dei caratteri "virgola" o "punto e virgola" che appare più volte sulla riga).


    <QUESTO CONTENUTO È DISTRIBUITO "AS IS", ESCLUDENDO OGNI FORMA DI RESPONSABILITÀ DI QUALUNQUE GENERE, ESPLICITA O IMPLICITA>

    Grazie
    Il Supporto delle Comunità MSDN

    Vi preghiamo di ricordare a “Segnare come Risposta” i post che risolvono il vostro problema. Questa è di solito una modalità di riconoscimento verso chi vi ha aiutati, facilitando per il futuro la scoperta della risoluzione per gli altri visitatori.



    • Modificato Irina Turcu venerdì 16 maggio 2014 09:57
    • Contrassegnato come risposta Anca Popa venerdì 6 giugno 2014 12:54
    venerdì 16 maggio 2014 09:56
  • Ciao BlackSun1971,

    avere un file con delimitatore di testo uguale al separatore decimale significa avere un file inutilizzabile salvo conoscerne l'esatto tracciato record (es <testo><testo><numero senza decimali><numero con decimali><testo> ecc.) e procedere con una parsing manuale carattere per carattere. Ache se la vera soluzione è buttare questo file e generare/far generare un file leggibile!

    Ciao


    Renato Marzaro  MVP Visual Basic

    http://community.visual-basic.it/renato

    • Contrassegnato come risposta Anca Popa venerdì 6 giugno 2014 12:55
    sabato 17 maggio 2014 09:42
    Moderatore
  • Ciao

    grazie per la risposta... un parsing manuale.... ci devo studiare un pò sopra....

    Grazie mille

    Ciao BlackSun

    lunedì 19 maggio 2014 07:16
  • Ciao,

    il problema è che non ho il controllo su questi files in quanto mi arrivano da terze parti.

    Dovrò inventarmi un parsing manuale e credo che opterò per questa soluzione: leggo la prima riga carattere per carattere e non appena trovo una virgola o un punto e virgola lo definisco come delimitatore e poi faccio le varie sostituzioni. Il casino è che se il carattere delimitatore è diverso dal punto e punto e virgola... ma in quel caso picchierei qualcuno :) ehehhe

    Grazie mille

    Ciao BlackSun

    lunedì 19 maggio 2014 07:23