csvを使用して引用符を追加する方法:
% package require csv
0.7.3
% set l [list "21" "Some test" "Some test"]
% ::csv::join $l {,} {"}
21,Some test,Some test
「21」、「いくつかのテスト」、「いくつかのテスト」のような出力が欲しい
csvを使用して引用符を追加する方法:
% package require csv
0.7.3
% set l [list "21" "Some test" "Some test"]
% ::csv::join $l {,} {"}
21,Some test,Some test
「21」、「いくつかのテスト」、「いくつかのテスト」のような出力が欲しい
パッケージは、だましてそうさせない限り、そのcsv
ような引用を提供しません。
単にそれを行うためのオプションを提供するべきだと主張する人もいるでしょうが、代わりにこれを試してみてください:
package require struct::list
set l {1 "Some Text" "Some Test"}
set r [join [struct::list map $l {format {"%s"}}] ","]
puts $r
このソリューションは最善ではありませんが、機能します。注意が必要なコーナーケースがあるかもしれません。リスト内の項目を変更する必要はなく、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を使用することです。
トリックは次のとおりです。
csv
にする (デフォルトは"
)% set L [list {"21"} {"Some test"} {"Some test"}]
{"21"} {"Some test"} {"Some test"}
% csv::join $L , {}
"21","Some test","Some test"
これは、中間のどこかに文字がある値の 1 つの問題を解決しないことに注意してください。"
これが発生する可能性がある場合は、ターゲットの CSV プロセッサが理解できる方法で、そのような文字を何らかの方法でエスケープする必要があります。