You are here

Tcl, Perl, Python의 split 공통점과 차이점 정리문서

허접한 실력으로 그 동안 공부해온 내용들 중 split의 공통점과 차이점을
적어봅니다.

운영자님의 부탁이 아니었으면 엄두도 못내었지만 부족한 실력 지도해
주시기를 바라면서 용기를 내어봅니다.

미약한 부분에 대해 답변을 주시면 저로서는 황송할 따름입니다.
도움이 되시기를 바라면 좋은 하루 되시길 바랍니다.

'새해 복 많이 받으세요.'

Tcl, Perl, Python 의 split 공통점과 차이점

[공통점]--------------------------------------------------

1) 하나의 문자를 기준으로 분리할 경우 동일한 동작을 한다.

예) Tcl: set text "a:b:c"
set list [split $text ":"]
puts $list; # a b c 3개의 리스트 반환

Perl: $text = "a:b:c";
@list = split(/:/, $text);
print "@list"; # a b c 3개의 리스트 반환

Python: import string
text = "a:b:c"
list = string.split(text,":")
print list # a b c 3개의 리스트 반환

[차이점]--------------------------------------------------

1) 문자열을 기준으로 분리를 하면 Perl,Python은 동일한 동작을 하지만
Tcl은 독특한 동작을 한다.

예) Tcl: set text "a:b#c"
set list [split $text ":#"]
puts $list; # a b c 3개의 리스트 반환

위에서 볼 수 있듯이 ":#"의 문자열을 기준이 아닌 각 개별적인 문자 ':','#'으로
분리한다. 즉 Tcl은 문자열 단위로 분리할 수 없다.

Perl: $text = "a:#b:#c";
@list = split(/:#/, $text);
print "@list"; # a b c 3개의 리스트 반환

Perl은 ":#" 문자열 단위로 리스트를 생성하였다.
아래 Python도 마찬가지이다.

Python: import string
text = "a:#b:#c"
list = string.split(text,":#")
print list # a b c 3개의 리스트 반환

2) 리스트의 생성 갯수 제한

Tcl: 직접적인 지원을 하지 않으므로 조금 번거로운 절차를 거친다.
익숙해지면 괜찮다. ^^;

set string "a b c"
set list [split $string]
puts [lrange $list 0 0]; # {a}
puts [lrange $list 1 end]; # {b c}

Perl: $text = "a:b:c";
@list = split(/:/, $text,2);
print "@list"; # a b:c 2개의 리스트 반환

Python: import string
text = "a:b:c"
list = string.split(text,":",1); # 파이썬의 분리갯수는 위의 Perl보다 1이 작아야 동일한 결과가 나온다.
print list # a b:c 2개의 리스트 반환