와 정말 이것때문에 내가 오늘 날린 시간을 생각하면.........부들부들.....

 

급하게 처리해야 하는 일이 있었는데 이것 때문에 한참 시간을 잡아먹었다.

파일을 읽어서 파일의 각 라인을 delimeter로 split한 리스트에 이런 저런 작업을 한 후 리스트를 출력해야 하는 상황이었는데 아무리 해도 '\xed\x95\x9c\xea\xb8\x80' 이런 식으로만 출력되는 것이었다..............ㅠㅠㅠ

즉, 어떤 리스트 li = ['123', '한글'] 이 있을 때 print(li)를 하려고 했던 상황.

파이썬 버전은 2.x (몇이었더라....)


구글링해서 적용해본 내용들


1) 파일 인코딩 형식 설정

: 파일 제일 위에 파일 인코딩 형식을 설정해준다

ex)

# -*- coding: utf-8 -*-


이건 원래 파일에 적용해놨던 내용이었는데, 파이썬 파일 내에서 한글을 사용하는 것 자체(주석을 한글로 단다던지, 상수값에 한글을 사용한다던지)에만 적용되는 것 같았다(추측임.....정확히 알아봐야지 언젠가.....). 혹시 몰라서 euc-kr로도 해봤는데 안 됨.



2) sys.setdefaultencoding 설정

: 파이썬 코드로 직접 디폴트 인코딩값을 설정한다.

import sys


reload(sys)

sys.setdefaultencoding('utf-8')


반드시 reload(sys)를 해야 적용된다.

근데 이것도 효과 없었음. euc-kr로 해봐도 역시 안 됨.



3) encode(), decode() 등의 함수를 적용한다.

: 이건 아예 에러 나면서 안 됨. 어떻게 적용했었는지 기억이 잘 안난다. 



해결


야매로 해결한 느낌이지만 일단 결과물을 먼저 내는게 급했기 때문에 해결방법을 찾은 것만으로도 감지덕지하며 어깨춤을 췄다. 그리고 그 방법은 바로..............

>>> li=['abc','한글']


>>> print(li)

['abc', '\xed\x95\x9c\xea\xb8\x80']


>>> print li[0], li[1]
abc 한글

이렇게 아래 방법으로 출력하니까 한글이 정상적으로 출력되더라 이 말씀!!

ㅎㅎ....영어권 나라에서 태어났으면 좋았을텐데....ㅎㅎㅎ....

ㅎㅎㅎ....



지금은 아직 해야 할 일이 남아있으므로 일단 이 포스팅을 남기는 것으로 만족하고....

이 문제에 대해 추가로 더 확인해봐야 할 사항에 대해서만 일단 작성해놔야지.



공부해야 할 것

* 왜 리스트를 통째로 toString으로 출력하려고 하면 한글이 출력되지 않는데 각각 출력하면 되는 거지?

* 어떤 방법을 써야 리스트를 통째로 출력해도 한글이 출력되지?

* 파이썬 한글 인코딩 관련 공부!


'잡동 > Python' 카테고리의 다른 글

[Flask] 리눅스 우분투 Flask 설치  (0) 2016.07.06
[Python] Exception(예외) 발생시키기  (0) 2016.05.18

로컬 PC에 바로 개발환경을 구축했다가 자칫 뭔가가 꼬이거나 잘못될 경우 번거롭다. 그래서 가상환경에 개발 환경을 세팅하는 방법을 사용하고 있다.


1. 가상 환경 구축

아직 Flask는 python 3.x 버전을 지원하지 않으므로 python 2.5 또는 상위 2.x 버전으로 가상환경을 구축할 것.

$ virtualenv 가상환경이름

ex) virtualenv myvenv


그럼 해당 명령어를 실행한 디렉토리에 지정한 가상환경이름으로 디렉토리가 생성된다. 그 곳이 가상환경이 설정되는 곳!

가상환경 디렉토리명을 변경하면 명령어가 제대로 수행되지 않으므로 변경하지 않아야 한다.


2. 가상환경 실행

$ source 가상환경설치디렉토리/bin/activate

ex) source myvenv/bin/activate


가상환경을 종료하고 싶을 땐 그냥 deactivate 라고 입력하면 된다.



3. flask 설치

$ pip install Flask



4. 끝!

'잡동 > Python' 카테고리의 다른 글

[Python] list 자료형에서 한글 출력  (0) 2016.08.06
[Python] Exception(예외) 발생시키기  (0) 2016.05.18

강제로 예외를 발생시켜야 하는 상황이 있다... 는 걸 그동안은 경험해 볼 일이 없다가

회사에서 뭔가를 만들다가 경험하게 되었다.

회사 조직도를 참고해서 부서의 상하 관계를 파악해야 할 일이 있어서 이걸 코딩으로 해결하는 과정에서 공부한 것.

raise 라는 키워드(?)를 사용해서 Exception 을 일으키면 된다. 



예제



마침 디자인 패턴에 대해 설렁설렁 공부하던 때라 Composite pattern을 이용해서 부서 상하관계를 파악하기로 했었다.

참고사이트(http://iilii.egloos.com/3838064)를 보며 구현했는데, Tree의 Leaf node에 child를 추가하려고 하면 에러가 발생해야한다는 걸 보고 이럴 때 예외를 강제로 발생시킬 수 있구나 했다.

실제로 문제를 해결할 땐 Leaf 클래스를 사용할 일이 없긴 했지만 예외를 강제로 발생시켜야 하는 상황의 필요성에 대해 조금이나마 알게 되었으니 포스팅을 남긴다.

'잡동 > Python' 카테고리의 다른 글

[Python] list 자료형에서 한글 출력  (0) 2016.08.06
[Flask] 리눅스 우분투 Flask 설치  (0) 2016.07.06

+ Recent posts