[REBOL] Re: csv files
From: g:santilli:tiscalinet:it at: 5-Jan-2001 20:11
Hello Graham!
On 05-Gen-01, you wrote:
GC> Does anyone have a routine to parse csv files?
You might want to try the following...
Regards,
Gabriele.
--
Gabriele Santilli <[giesse--writeme--com]> - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
REBOL [
Title: "CSV parser"
Author: "Gabriele Santilli"
]
CSV-parser: make object! [
line-rule: [field any [separator field]]
field: [[quoted-string | string] (insert tail fields any [f-val copy ""])]
string: [copy f-val any str-char]
quoted-string: [{"} copy f-val any qstr-char {"} (replace/all f-val {""} {"})]
str-char: none
qstr-char: [{""} | separator | str-char]
fields: []
f-val: none
separator: #";"
set 'parse-csv-line func [
"Parses a CSV line (returns a block of strings)"
line [string!]
/with sep [char!] "The separator between fields"
] [
clear fields
separator: any [sep #";"]
str-char: complement charset join {"} separator
parse/all line line-rule
copy fields
]
]