如何在 TCL 中从头开始写 CSV 文件,我有一行数据
How to write CSV file form the beginning in TCL, I have a data in rows
如何在 TCL 中写入 CSV 文件,我有需要放入 CSV 文件中的数据,我以前从未使用过 CSV。
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
如何在 TCL 中写入 CSV 文件,我有需要放入 CSV 文件中的数据,我以前从未使用过 CSV。
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