我的foreach循环逻辑需要一些帮助:
除了循环中的最后一个语句
之外,我需要在每个print语句后面加一个逗号 ex:blah,blah2,blahlast
以下代码甚至在最后一个语句之后输入逗号。
foreach row $regions {
set name [lindex $row 0]
set id [lindex $row 1]
puts "{'name':'$name', 'val':'$region_id'}"
puts ","
}
也许如果我计算它循环的次数,我可以检查一个if条件,将逗号unlti放在最后一次迭代中
答案 0 :(得分:4)
另一种接近它的方法是建立一个要打印的项目列表并在最后加入它:
set lines {}
foreach row $regions {
set name [lindex $row 0]
set region_id [lindex $row 1] ;# changed this from id to region_id, seemed right
lappend lines "{'name':'$name', 'val':'$region_id'}"
}
puts [join $lines ",\n"]
答案 1 :(得分:3)
诀窍是在所有迭代上打印逗号但是第一个(即,颠倒你的逻辑):
set xs {a b c}
set s ""
set need_comma false
foreach x $xs {
if {$need_comma} {
append s ,
} else {
set need_comma true
}
append s $x
}
puts $s
会产生
a,b,c
请注意,您似乎只是在寻找join
命令。
答案 2 :(得分:0)
我为RHSeeger投了+1,因为这就是我要做的。但是,您似乎正在尝试将TCL列表转换为Python的列表。如果是这种情况,您甚至不必担心抑制最后一个逗号:Python允许:
>>> li = [1,2,3,]
>>> len(li)
3
这意味着,您当前的解决方案有效。不要担心最后一个逗号。