如何使用csv添加引号:
% package require csv
0.7.3
% set l [list "21" "Some test" "Some test"]
% ::csv::join $l {,} {"}
21,Some test,Some test
我想要输出 “21”,“一些测试”,“一些测试”
答案 0 :(得分:2)
csv
包不提供此类引用,除非您欺骗它。
人们肯定会争辩说它应该只提供一个选项来做,但试试这个:
package require struct::list
set l {1 "Some Text" "Some Test"}
set r [join [struct::list map $l {format {"%s"}}] ","]
puts $r
答案 1 :(得分:0)
诀窍是:
csv
的转义(默认为"
)% set L [list {"21"} {"Some test"} {"Some test"}]
{"21"} {"Some test"} {"Some test"}
% csv::join $L , {}
"21","Some test","Some test"
请注意,这并不能解决您的某个值在中间位置具有"
字符的问题 - 如果发生这种情况,您应该以某种方式以目标CSV处理器理解的方式转义此类字符。 / p>
答案 2 :(得分: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,除非你真的需要引号。