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

如何使用::csv::split分割和处理csv文件中的多行,csv,split,tcl,Csv,Split,Tcl,我试图使用TCL从csv文件的多行中提取和处理数据。但我找不到有关其用法的适当文档。有人能帮我吗?是否有更好的方法从CSV文件中提取数据并对其进行处理 如果您已将一些CSV数据行拉入变量CSV,则可以将其转换为元组列表,并将其存储在变量数据中,如下所示: set data {} foreach row [split [string trim $csv] \n] { lappend data [::csv::split $row] } 就这样。如果CSV数据不使用逗号,则必须在调用中指定

我试图使用TCL从csv文件的多行中提取和处理数据。但我找不到有关其用法的适当文档。有人能帮我吗?是否有更好的方法从CSV文件中提取数据并对其进行处理

如果您已将一些CSV数据行拉入变量
CSV
,则可以将其转换为元组列表,并将其存储在变量
数据中,如下所示:

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
中有将csv数据转换为例如Tcllib
矩阵
结构的工具,这非常方便,但不是必需的。

谢谢Peter。但我想知道是否有其他方法可以直接从CSV文件中提取每一行并处理该行中的信息。迭代整个文件中的每一行。@KarunJohn:当然,请参阅更新。请注意,如果使用矩阵或队列,则
csv
read2*
write*
命令可以一次性完成此操作。