▒ Python  소스:  testStringReverse.py

#!/usr/bin/python
# -*- coding: cp949 -*-

s = "Hello, world!"
s2 = "안녕하세요?"

#########################################
t = s[::-1]      # 문자열 거꾸로 하기
t2 = s2[::-1]    # 문자열 거꾸로 하기

#########################################
u = ''.join(reversed(s))     # reversed(string) 함수 사용(Python 2.4 이상 가능)
u2 = ''.join(reversed(s2))   # reversed(string) 함수 사용(Python 2.4 이상 가능)

print( "s = " + s )
print( " ---> " + "s[::-1] = " + t )
print( "      " + "''.join(reversed(s)) = " + t )
print( "s2 = " + s2 )
print( " ---> " + "s2[::-1] = " + t2 )
print( "      " + "''.join(reversed(s2)) = " + t2 )
#########################################
# 출력 결과(Python 2.5의 경우):
# s = Hello, world!
#  ---> s[::-1] = !dlrow ,olleH
#       ''.join(reversed(s)) = !dlrow ,olleH
# s2 = 안녕하세요?
#  ---> s2[::-1] = ?岳세逑楹횡
#       ''.join(reversed(s2)) = ?岳세逑楹횡
#########################################
# 출력 결과(Python 3.0의 경우):
# s = Hello, world!
#  ---> s[::-1] = !dlrow ,olleH
#       ''.join(reversed(s)) = !dlrow ,olleH
# s2 = 안녕하세요?
#  ---> s2[::-1] = ?요세하녕안
#       ''.join(reversed(s2)) = ?요세하녕안




위의 예제에서 보듯이
멀티바이트 유니코드의 문자열을 거꾸로 하기가 Python 3.0의 경우에는 잘 동작하지만,
Python 2.5의 경우에는 잘 동작하지 않는다.
이를 대화형 모드(inttractive mode) 파이썬에서 다시 한번 확인해 보자.

[Python 3,0의 경우]---------------------
명령 프롬프트> python
Python 3.0 (r30:67507, Dec  3 2008, 20:14:27) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> s = "한글"
>>> print( s[::-1] )
글한
>>> ^Z
----------------------------------------



[Python 2,5의 경우]---------------------
명령 프롬프트> python
Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> s = "한글"
>>> print( s[::-1] )
旁饑
>>> ^Z
----------------------------------------


[참고]
IronPython에서 실행시킬 경우 첫줄의 유닉스 shebang(#!) 줄을 제거하여 인코딩 선언

# -*- encoding: cp949 -*-

이 첫 줄에 오도록 고치면 한글도 (정상적으로) 역순으로 변환되어 출력된다.





Creative Commons License

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.


Posted by Scripter
,