본문으로 바로가기

요즘 python과 tcl을 혼합해서 사용하는 경우가 많아서..

python의 리스트를 tcl의 리스트 타입으로 변환할 필요가 있거나..

아니면 반대로 할 경우가 가끔 있어서 만들어 보았음..

 

아래는 python 리스트를 tcl 리스트로 변환..

def totcllist(value):
    if type(value) != list:
        return '"' + str(value) + '" '
    result = '[list '
    for item in value:
        result += totcllist(item)
    result += ']'
    return result

totcllist([1,2,3,['a','b', [0x11, 0x22]]])
==> '[list "1" "2" "3" [list "a" "b" [list "17" "34" ]]]'

 

아래는 tcl 리스트를 python 리스트로 변환..

proc topylist {value} {
	if {[llength $value] == 1} {
		if {[string is integer -strict $value]} {
			return "$value"
		} else {
			return "'$value'"
		}
	}
	set result "\["
	set i 1
	foreach item $value {
		append result [topylist $item] 
		if { [llength $value] != $i } {
			append result ","
		}
		incr i
	}
	if { [string index $result end] == "," } {
		set result [string range $result 0 end-1]
	}
	append result "\]"
	return $result
}

topylist { 12 100 {12 34} {56 {78 {11 12 11} 10 "abc"}}}
==> [12,100,[12,34],[56,[78,[11,12,11],10,'abc']]]