如何使用:: csv :: split来拆分和处理CSV文件中的多行

时间:2018-06-10 18:50:29

标签: csv split tcl

我尝试使用::csv::split使用TCL从CSV文件中的多行提取和处理数据。但我找不到有关其用法的适当文档。谁能帮我这个?有没有更好的方法从CSV文件中提取数据并进行处理?

1 个答案:

答案 0 :(得分:0)

如果您已将某些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结构,非常方便,但不是必需的。