콘텐츠로 건너뛰기
Home » Development » Python » Page 16

Python

python regex cheatsheet

Cheatsheet for python regex

Regex module

re 모듈이 정규식을 지원한다.

match

re.match() 함수는 주어진 패턴을 문자열의 시작지점부터 적용하여 매칭되는 결과가 있으면 match 객체를, 그렇지 않은 경우 None을 리턴한다.

> re.match(r'\d', 'a1c2')
==> None
> re.match(r'a', 'a1c2')
<_sre.SRE_Match object at 0x028543A0>

더 보기 »python regex cheatsheet

pypy virtualenv 만들기

pypy의 virtualenv를 만들 때 오류가 나면서 진행이 되지 않는 경우가 있다. (아마 pypy의 디렉터리 구조가 좀 달라서 그럴 것 같은데) > c:pypy\bin\virtualenv.exe pypyenv 정상적인 가상환경이라면 다음의 요소가 가상환경 디렉토리에 들어있어야 한다. lib_pypy 디렉터리 lib-python 디렉터리 activate.bat 스크립트 따라서 1, 2를 수동으로 통째로 복사해 넣고, python2.7의 virtualenv 를 사용, 파이썬 실행파일을 지정해주는 것으로 방식을 대체해주면 된다. > cp -rv c:/pypy/lib-python pypypenv/ > cp -rv c:/pypy/lib_pypy pypyenv/ > c:\python27\Scripts\virtualenv.exe -p c:pypypypy.exe pypyenv cp는 msys를 설치해서 실행되는거고, 그렇지 않다면 xcopy /s 명령을 사용하면… 더 보기 »pypy virtualenv 만들기

파이썬 포매팅 함수

파이썬에서는 C와 유사한 포맷팅 문자열을 사용하는 방법이 있는데, 이와 별개로 문자열 객체의 .format() 메소드를 사용하여 포맷팅된 문자열을 생성하는 방법이 있다. 이 때 사용되는 포맷팅 규격은 조금 다른데, 생각보다 간단하고 훨씬 편리할 수 있으니 자주 애용해서 몸에 익히도록 하자. 문법 포맷팅 함수는 다음과 같이 사용한다. >>> "score:{0}, wins:{1}".format(3, 1) 'score:3, wins:1' %타입과 달리 중괄호에 들어간 숫자를 사용해서 포맷팅할 값들을 쓸 수 있다. 값은 인덱스 번호로 쓰여지기 때문에 하나의 값을 여러 번 사용하는 것도 가능하다. >>> "{0} {0} {0}".format(123) '123 123 123'… 더 보기 »파이썬 포매팅 함수

파이썬에서 파일 복사

폴더마다 같은 종류의 다른 사이즈의 아이콘들이 들어 있는데 이중 48X48 크기의 아이콘들 중 좀 쓸만한 것들을 뽑아서 다른 폴더에 모으려고 했는데, 양이 너무 많았다. 차라리 그 크기의 아이콘들만 모두 모아서 한 곳에 모아두고 보는 게 좋겠다 싶었다.
파이썬은 이럴때 쓰라고 있는 겁니다. 내가 쓰고자 하는 파일들은 모두~”48.png”로 끝나는 파일이라 이 파일들만 복사하면 된다. 특이하게 os 모듈이 아니라 shutil 모듈에 파일 복사 기능이 들어있더라.
더 보기 »파이썬에서 파일 복사

파일에서 한줄씩 읽어 들이기 – Objective-C

파이썬에서는 텍스트 파일을 가리키는 파일 객체는 파일 내용의 각 라인에 대한 이터레이터처럼 작동한다. 따라서 별다른 노력을 들이지 않고 for … in 구문을 통해서 텍스트 파일의 각 라인을 읽어서 처리하는 것이 가능하다. 이 기능의 멋진 점은 파일 객체가 느긋하게 동작하기 때문에 각 라인이 필요한 시점에 한 라인씩 읽어들인다는 것인데, 따라서 각 라인의 길이가 적절하다면 파일의 크기가 아무리 크더라도 안전하게 읽어들일 수 있다는 것이다. Objective-C에서 텍스트 파일은 보통 NSString의 stringWithContentOfFile: 메소드를 사용한다. 이 메소드의 문제는 파일을 한 번에 읽어들인 다는 점이다. 따라서… 더 보기 »파일에서 한줄씩 읽어 들이기 – Objective-C

파이썬에서 한글이 깨진다고요? – 파이썬의 한글 입출력과 인코딩에 대해

파이썬의 한글 인코딩에 대해

파이썬의 대화형 인터프리터를 사용하다보면 한글 인코딩의 함정에 빠지기 쉬운데 이를테면 소스를 그대로 해석기로 실행하는 경우에는 인코딩 에러가 안나던 것이, IDLE을 통해서 실행해보면 오류가 난다거나 그 반대의 경우가 있다. 이렇게 이해할 수 없는 상황을 어떻게 해야할까?

몇년 전이라면 그것은 MS의 잘못이거나 파이썬의 잘못이었다. 하지만 윈도에서 한글로 된 데이터를 다뤄야 하는데 파이썬 2를 쓰고 있다면 그것은 매우 높은 확률로 당신의 잘못이다.

더 보기 »파이썬에서 한글이 깨진다고요? – 파이썬의 한글 입출력과 인코딩에 대해

인자를 받는 모양의 데코레이터 작성법

flask로 간단한 서버를 만드는 예제를 보면 좀 특이한 형태의 데코레이터 패턴을 발견할 수 있다. 바로 @app.route('/path')와 같은 모양의 인자를 받아 함수를 실행한 모양의 데코레이터가 그것이다. 흔하게 쓰이는 데코레이터 패턴이라면 @app.route 와 같이 함수나 클래스의 이름만 써서 사용하는데, 이러한 함수를 실행하는 꼴로 사용할 수 있을까? 물론 그렇게 만들 수 있으니까 쓰고 있을 것이다. 그래서 이런 모양의 데코레이터를 어떻게 만들 수 있을지에 대해 생각해 보았다.
더 보기 »인자를 받는 모양의 데코레이터 작성법

재귀호출과 피보나치 수열 탐구

재귀호출은 함수가 그 내부에서 자신을 다시 호출하는 것이다. 이는 언뜻 이상하게 보일 수 있고, 경우에 따라서는 의도치 않은 동작을 하게 할 수 있어서 일반적으로는 지양되는 방법이기는 하나, 대신에 코드가 짧아질 수 있고 실행 로직 자체가 어느 정도 제한된 경우라면 충분히 사용할 수 있다. 특히 하스켈과 같은 함수형 언어에서는 반복문을 돌리는 로직이 없기 때문에 재귀호출을 하는 함수를 자주 사용하게 된다. 더 보기 »재귀호출과 피보나치 수열 탐구

오일러 프로젝트 3번 문제

문제: 600851475143의 소인수 중 가장 큰 값을 구하시오. 소수를 찾는 가장 간단하고 무식한 방법은 2에서 자기자신까지 1씩 더하면서 나눠보고 확인하는 방법이다. 따라서 소인수를 찾으려면 1)나눠 떨어지는지 검사, 2) 그 수가 소수인지 검사를 하면 된다. 그래서 저 숫자의 가장 큰 소인수를 그런 무식한 방법으로 계산하려한다면…. 아마 컴퓨터가 한 동안 말이 없어질 건데, 꽤 오랜 시간동안 말이 없을 거다. 아, 물론 저 수에서 거꾸로 내려가면서 계산을 해보면 어떻겠냐고? 조금은 빠를 거 같은데 해보시라… 조금 더 계산 횟수를 단축 시키기 위해서 사용한 방법은… 더 보기 »오일러 프로젝트 3번 문제

[Python] SQLite3 DB의 테이블 칼럼 이름 알아내기

테이블의 칼럼 이름을 기억하기 힘든 경우에는  CREATE TABLE 명령을 따로 복사해서 보관하거나,  아예 종이에 출력해 두기도 하는데 만약 내가 만든 테이블이 아닌 경우에는 SQLite3 쉘을 실행해서 .schema 명령으로 테이블 스키마를 확인해야 한다. (사실 이것도 상당히 바람직한 방법인데, 윈도 시스템에서 이 작업을 할 수 있는 방법에 대해서는 조만간 다시 글을 하나 쓸 생각이다.)더 보기 »[Python] SQLite3 DB의 테이블 칼럼 이름 알아내기