'project/python'에 해당되는 글 25건

  1. 2007.08.18 한글로 된 html 읽어올 때 u' 제거하기
  2. 2007.08.14 파이썬 리소스
  3. 2007.08.05 Sample 프로그램 해석하기
  4. 2007.07.29 파이썬 공부 시작
  5. 2007.07.29 PyScripter 에러 해결하기
http://home.paran.com/johnsonj/hangul/How%20to%20Use%20UTF-8%20with%20Python.html 에서 답을 찾을 수 있다.

바이트 순서 표식자(Byte Order Marker (BOM))

UTF-8 파일은 가끔 바이트 순서 표식(BOM)으로 시작하여 UTF-8로 인코딩 되어 있음을 알린다. 이는 보통 윈도우즈에서 사용된다. Mac OS X에서, (예, TextEdit 같은) 어플리케이션은 BOM을 무시하고 파일이 다시 저장될 때 그 표식을 제거한다. W3C HTML 평가기는 구형 어플리케이션에서 BOM을 처리하지 못할 수도 있다고 경고한다. 유니코드는 효과적으로 그 표식을 무시하므로, 파일을 읽을 때 문제가 되지 않을 것이다. 파일의 시작에 이 표식을 추가해 ASCII로 인코딩되었는지 UTF-8로 인코딩되었는지 결정하고 싶다면, codecs 모듈은 이렇게 하기 위한 상수를 제공한다:

out = file( "someFile", "w" )
out.write( codecs.BOM_UTF8 )
out.write( unicodeString.encode( "utf-8" ) )
out.close()

BOM과 UTF-8을 사용할 때 주의할 필요가 있다. 솔직히, 나는 이것이 파이썬의 버그라고 생각하지만, 나도 잘 모른다. 파이썬은 BOM 값을 무시하는 대신에 유니코드 문자로 바꾼다. 예를 들어 (파이썬 2.3에서 테스트함):

>>> codecs.BOM_UTF16.decode( "utf16" )
u''
>>> codecs.BOM_UTF8.decode( "utf8" )
u'\ufeff'

UTF-16에 대하여, 파이썬은 BOM을 빈 문자열로 디코드하지만, UTF-8에 대해서는, 문자 하나로 디코드한다. 왜 차이가 있는가? UTF-8 디코더는 UTF-16 디코더와 똑 같은 일을 해야 당연하고 BOM 표식을 제거해야 할 것이다. 그렇지만, 그렇게 하지 않기 때문에, 다음과 같이 손수 탐지하여 제거할 필요가 있을 것이다:

import codecs
if s.beginswith( codecs.BOM_UTF8 ):
	# 바이트 문자열이 BOM과 함께 시작한다: 무언가를 한다.
	# 예를 들어, 문자열을 UTF-8로 디코드한다
	
if u[0] == unicode( codecs.BOM_UTF8, "utf8" ):
	# 유니코드 문자열이 BOM으로 시작한다: 무언가를 한다.
	# 예를 들어, 그 문자를 제거한다.

# BOM이 존재한다면, 유니코드 문자열의 선두로부터 걷어낸다. 
u.lstrip( unicode( codecs.BOM_UTF8, "utf8" ) )
Posted by trigger
,

파이썬 리소스

project/python 2007. 8. 14. 14:19

http://www.python.jp/Zope/
- 일본 파이썬 포럼. 일본어 번역기를 이용하면 많은 내용을 볼 수 있다.

http://home.paran.com/johnsonj/
- 파이썬 문서고

http://wiki.wxpython.org/index.cgi/AnotherTutorial
- 파이썬 WXTutorial

http://tdd.or.kr/wiki 
- 점프 투 파이썬의 인터넷 공개 버젼

Posted by trigger
,

http://openlook.org/blog/1159 에서 가져온 것을 해석하는 중

중간의 일부를 바꾸어서 내가 읽어오고자 하는 곳에 맞게 변경

def safeunicode(s):
    s = str(s).decode('utf-8')
    try:
        return s.encode('euc-kr').decode('cp949')
    except UnicodeDecodeError:
        return s

위에서 encode('latin-1')으로 되어 있는 것을 encode('euc-kr')으로 바꾸었더니 최소한 pyScripter에서는 한글 출력이 잘 되고 있다.

Test용 스크립트
from kaistfood import *
menu = getmenu(u'동측')
print ', '.join(menu[0])
menu = getmenu(u'서측')
print ', '.join(menu[0])

결과
모닝빵, 딸기잼, 크림스프, 양배추샐러드, 사우전, 토마토, 쌀밥, 두부된장국, 양송이야채볶음, 부추무침, 배추김치
쌀밥, 쇠고기무국, 계란찜, 시금치나물, 알타리김치

한글 처리시 주의사항: pyScripter에서 Edit > File Format > UTF-8 로 해줘야 에러가 생기지 않는다

Posted by trigger
,

공식 문서: 2.6 version
http://docs.python.org/index.html

Python 2.5 Quick Reference
http://rgruet.free.fr/PQR25/PQR2.5.html

Python 2.4 Quick Reference
http://rgruet.free.fr/PQR24/PQR2.4.html

파이썬 문서고
http://coreapython.hosting.paran.com/pygnudoc.html

파이썬 FAQ
http://coffeenix.net/doc/language/pyfaq/index.htm

파이썬 간편 참조서 2.3
http://onionmixer.net/~onion/python.pdf

파이썬 2.3 간편 참조서
http://codelog.tistory.com/15

JumpToPython
http://tdd.or.kr/pf/book/render_page?pagename=JumpToPython&keyword=&filename=&curpage=&historyname=&content=&newJump%20To%20Python

Jump to Python 2nd Edition
http://wikidocs.net/mybook/read/page?pageid=1

PDF 파일들로 설명이 되어 있다. dict의 has_key라는 것이 뭔지를 찾다가 발견한 사이트
http://sparcs.kaist.ac.kr/~wafe/doc/python/

블로그에 올려진 열혈강의 파이썬
http://creaplz.tistory.com/tag/Python

How to Think Like a (Python) Programmer
http://www.scribd.com/doc/2090074/How-to-Think-Like-a-Python-Programmer

Python : 2.4 version
IDE      : pyScript
기타 모듈 : Beautiful Soup, xlrd, pyExcelerator-0.6.3a

xlrd를 사용해서 파이썬에서 엑셀을 읽어오도록 한다

C:\Python24\Lib\site-packages\xlrd\doc\xlrd.html 를 해석해서 적용해야 엑셀을 이용할 수 있다.
http://www.lexicon.net/sjmachin/xlrd.htm
http://www.lexicon.net/sjmachin/README.html  설명

http://sourceforge.net/projects/pyexcelerator

Excel을 읽는 데는 xlrd가 뛰어나지만, Excel을 쓰는 용도로는 pyExcelerator가 더 뛰어나다고 한다 http://www.thescripts.com/forum/thread471698.html

내게 필요한 정도의 짧은 것들만 되어 있어서 이걸 그냥 써도 될 듯 하다
Easy Cross Platform Excel Parsing With Xlrd
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/483742

Posted by trigger
,
http://pylab.tistory.com/3 에서 퍼옴. 그런데 저 사이트가 열리지 않는 문제가 있음

파이썬의 IDE 로 급부상하고 있는 PyScripter!
예쁘기도 하고 기능도 막강하고 해서 애용하는 분들이 많을 겁니다.

사용자 삽입 이미지

그런데 쓰다 보면 아래와 같이 UnicodeDecodeError 가 발생해서 PyScripter 가 먹통이 될 때가 있습니다.

사용자 삽입 이미지

OK 를 누르면 계속 디버깅 상태로 머물고 디버깅 상태에서 벗어날 수가 없게 됩니다.

사용자 삽입 이미지

이 것은 PyScripter 가 가지고 있는 Python Path 에 한글이 포함되어 있기 때문에 발생하는
문제입니다. 아래 메뉴로 들어가서 확인해 봅시다.

사용자 삽입 이미지

'바탕화면'이라는 한글이 포함되어 있네요.

사용자 삽입 이미지

저 Path 를 Remove 버튼을 눌러서 삭제해 주면 되지만 PyScripter 를 다시 실행시키면 저 Path 가 다시 입력 되어 있어서 매번 실행할 때마다 지워줘야 하는 불편함이 있습니다.

이 문제를 해결하기 위한 방법은 간단합니다. 바탕화면의 PyScripter 바로가기의 속성을
선택합니다.

사용자 삽입 이미지

속성을 선택한 후 시작위치를 한글이 없는 곳으로 설정해 주세요. 저는 C:\Python24\ex 에다 예제를 작성하기 때문에 'C:\Python24\ex' 로 설정했습니다.

사용자 삽입 이미지

이제 다시 PyScripter 를 실행하면 아무 문제 없이 잘 될 것입니다^^
그러면 파이썬 여행 즐겁게 하세요!!
Posted by trigger
,