Sto provando a usare PARSE per trasformare una linea CSV in un blocco Rebol. Abbastanza facile da scrivere in codice aperto, ma come per altre domande sto cercando di imparare che cosa può fare il dialetto senza quello.Come utilizzare il dialetto PARSE per leggere una riga da un CSV?
Quindi, se una linea dice:
"Look, that's ""MR. Fork"" to you!",Hostile Fork,,http://hostilefork.com
poi voglio il blocco:
[{Look, that's "MR. Fork" to you!} {Hostile Fork} none {http://hostilefork.com}]
Questioni da notare:
- citazioni incorporate nelle stringhe CSV vengono indicati con
""
- Le virgole possono essere all'interno delle virgolette eh ENCE parte, non un separatore di colonna letterale
- adiacenti virgole colonna di separazione indicano un campo vuoto
- stringhe che non contengono virgolette o virgole possono apparire senza virgolette
- Per il momento possiamo mantenere le cose come
http://rebol.com
come STRING! invece di LOAD loro ing in tipi come URL!
Per rendere più uniforme, la prima cosa che faccio è accodare una virgola alla linea di ingresso. Poi ho un column-rule
che cattura una singola colonna terminata da una virgola ... che può essere tra virgolette o meno.
so quante colonne ci dovrebbe essere dovuto alla riga di intestazione, in modo che il codice dice poi:
unless parse line compose [(column-count) column-rule] [
print rejoin [{Expected } column-count { columns.}]
]
ma io sono un po 'bloccato sulla scrittura column-rule
. Ho bisogno di un modo nel dialetto per esprimere "Una volta trovato un preventivo, continua a saltare le coppie di quotazioni finché non trovi una citazione che si trova da sola." Qual è un buon modo per farlo?
Tempo di risposta fantastico su una risposta che sembra (finora) per lavorare sui dati stravaganti che ho dato! – HostileFork