如何在 TCL 中从头开始写 CSV 文件,我有一行数据

How to write CSV file form the beginning in TCL, I have a data in rows

如何在 TCL 中写入 CSV 文件,我有需要放入 CSV 文件中的数据,我以前从未使用过 CSV。

看看CSV module in Tcllib

CSV 使用起来非常棘手。你不能只是盲目地用逗号连接元素,因为数据中可能有逗号:

set data {42 "value,with,commas" {value "with quotes"}}
puts [join $data ,]
42,value,with,commas,value "with quotes"

字段数不正确。所以,让我们引用每个元素。

puts [join [lmap elem $data {format {"%s"} $elem}] ,]
"42","value,with,commas","value "with quotes""

但是现在内引号被打破了,所以 CSV 惯例是双引号。

puts [join [lmap elem $data {format {"%s"} [string map {{"} {""}} $elem]}] ,]
"42","value,with,commas","value ""with quotes"""

如果引用过多,现在这是正确的 CSV。 或者,正如 Colin 所说,使用 csv

package require csv
puts [csv::join $data]
42,"value,with,commas","value ""with quotes"""

或者,如果您已经有代表您数据的列表列表

set data2 {{a b c} {d e f} {g h i}}
puts [csv::joinlist $data2]
a,b,c
d,e,f
g,h,i