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

时间:2016-03-14 10:41:17

标签: tcl

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

2 个答案:

答案 0 :(得分:2)

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。 或者,正如科林所说,使用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

答案 1 :(得分:1)