Как использовать :: csv :: split для разделения и обработки нескольких строк в файле CSV - PullRequest
0 голосов
/ 10 июня 2018

Я пытался использовать ::csv::split для извлечения и обработки данных из нескольких строк в файле CSV с использованием TCL.Но я не мог найти надлежащую документацию о его использовании.Кто-нибудь может мне с этим помочь?Есть ли лучший способ извлечь данные из файла CSV и обработать его?

1 Ответ

0 голосов
/ 10 июня 2018

Если вы поместили несколько строк данных 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, которые могут быть очень удобными, но не обязательными.

...