2014년 8월 13일 수요일

정규표현식


#!/usr/bin/python3
# 정규표현식
# by Elex (http://python.elex.pe.kr/)

import re

def main():
   
    # 패턴 컴파일
    pattern = re.compile("([\.0-9a-z_-]+)@([0-9a-z_-]+)(\.[0-9a-z_-]+){1,2}" , re.IGNORECASE)
   
    txt = "someone's email address is email@email.com "
    # 찾기
    match = re.search(pattern, txt)
    # 또는
    match = re.search("([\.0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}" , txt)
       
    if match:   
        print('{} is valid email address.' .format(match.group()))

    # 바꾸기
    print(re.sub("([\.0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}", "*****", txt))
    # 또는
    if match:
        print(txt.replace(match.group(), "*****"))
              
if __name__ == "__main__": main()


파이썬에서 정규표현식 관련 기능은 re라는 모듈을 통해서 제공된다.
패턴 문자열을 컴파일한 후에 search() 메서드를 사용할 수도 있고, search() 메서드에 패턴 문자열을 직접 지정해서 사용할 수도 있다. search() 메서드는 일치 결과를 반환하는데 일치하지 않으면 None을 반환한다.


2014년 8월 12일 화요일

문자열


#!/usr/bin/python3
# 문자열
# by Elex (http://python.elex.pe.kr/)


def main():
   
    print( "This is a string." .upper()) # THIS IS A STRING.
    print( "This is a string." .lower()) # this is a string.
    print( "this is a string." .capitalize()) # This is a string.
    print( "This Is A String." .swapcase()) # tHIS iS a sTRING.
   
    print( "This is a string." .find("is")) # 2
    print( "This is a string." .replace("This", "That")) # That is a string.
       
    print( "  This is a string.  " .strip()) # This is a string.
    print( "  This is a string.  " .strip("\n")) #   This is a string. 
    print( "  This is a string.  " .rstrip()) #   This is a string.
    print( "  This is a string.  " .lstrip()) # This is a string. 
 
    print( "This is a string." .isalnum()) # False
    print( "This is a string." .isalpha()) # False
    print( "This is a string." .isdigit()) # False
    print( "This is a string." .isprintable()) # True
   
    print( "This is a string." .split()) # ['This', 'is', 'a', 'string.']
    print( "This is a string." .split('i')) # ['Th ', 's ', 's a str', 'ng.']
   
    print( "-".join(['This', 'is', 'a', 'string.' ])) # This-is-a-string.
   
    a, b = 3, 5
    print( "a는 {}이고, b는 {}이다." .format(a, b))
    print( "b는 {1}이고, a는 {0}이다." .format(a, b))
   
    d = dict(first = 3, second = 5 )
    print( "퍼스트는 {first}이고, 세컨드는 {second}이다." .format(**d))
   
if __name__ == "__main__": main()


문자열을 다룸에 있어서, 파이썬과 다른 프로그래밍 언어와의 가장 큰 차이점 중 하나는 파이썬 언어에서는 문자열 리터럴도 메서드를 연결해서 쓸 수 있다는 것이다.
위의 소스 코드는 몇 가지 유용한 파이썬 문자열 메서드들을 나열한 것이다.