Если вы поместили несколько строк данных CSV в переменную csv
, вы можете преобразовать их в список кортежей и сохранить в переменной data
следующим образом:
set data {}
foreach row [split [string trim $csv] \n] {
lappend data [::csv::split $row]
}
Вот и все.Если данные CSV не используют запятые, вам нужно будет указать в вызове разделитель столбцов, например ::csv::split $row \t
или любой другой.
Чтение непосредственно из файла:
set f [open foo.csv]
set data {}
while {[gets row] >= 0} {
lappend data [::csv::split $row]
}
close $f
или fileutil
:
package require fileutil
set data {}
::fileutil::foreachLine row foo.csv {
lappend data [::csv::split $row]
}
Я много использовал csv
и очень доволен этим.
В csv
есть средства для преобразования данных CSV внапример, структуры Tcllib matrix
, которые могут быть очень удобными, но не обязательными.