4

我如何使用 csv 添加引用字符:

% package require csv
0.7.3

% set l [list "21" "Some test" "Some test"]
% ::csv::join $l {,} {"}
21,Some test,Some test

我想要像 "21","Some test","Some test" 这样的输出

4

3 回答 3

2

csv软件包不提供此类引用,除非您诱骗它这样做。

可以肯定地说,它应该只是提供一个选项来做这件事,但试试这个:

package require struct::list

set l {1 "Some Text" "Some Test"}
set r [join [struct::list map $l {format {"%s"}}] ","]
puts $r
于 2012-09-15T23:53:29.843 回答
0

诀窍是:

  • 让 Tcl 不去掉你的双引号;
  • Disablecsv的转义(默认为"
% set L [list {"21"} {"Some test"} {"Some test"}]
{"21"} {"Some test"} {"Some test"}
% csv::join $L , {}
"21","Some test","Some test"

请注意,这并不能解决您的某个值"在中间某处有一个字符的问题——如果发生这种情况,您应该以某种方式以您的目标 CSV 处理器理解的方式转义这些字符。

于 2012-09-16T22:38:57.237 回答
0

这个解决方案不是最好的,但有效。您可能需要注意一些极端情况。它不需要更改列表中的项目,也不需要 CSV 包。

set theList [list "21" "Some test" "Some test"]
set quotedCSV "\"[join $theList {","}]\""
puts $quotedCSV

基本上,quotedCSV = quote + ( theList, separated by quote+comma+quote ) + quote. 我的建议是使用 CSV,除非你真的需要引号。

于 2012-09-18T17:36:13.910 回答