如何使用::csv::split分割和处理csv文件中的多行
我试图使用TCL从csv文件的多行中提取和处理数据。但我找不到有关其用法的适当文档。有人能帮我吗?是否有更好的方法从CSV文件中提取数据并对其进行处理 如果您已将一些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数据不使用逗号,则必须在调用中指定
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]
}
我已经使用了很多csvcsv
,我对此非常满意
csv
中有将csv数据转换为例如Tcllib矩阵
结构的工具,这非常方便,但不是必需的。谢谢Peter。但我想知道是否有其他方法可以直接从CSV文件中提取每一行并处理该行中的信息。迭代整个文件中的每一行。@KarunJohn:当然,请参阅更新。请注意,如果使用矩阵或队列,则csv
read2*
和write*
命令可以一次性完成此操作。