我尝试使用::csv::split
使用TCL从CSV文件中的多行提取和处理数据。但我找不到有关其用法的适当文档。谁能帮我这个?有没有更好的方法从CSV文件中提取数据并进行处理?
答案 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
结构,非常方便,但不是必需的。