re , queue module

파이썬 프로그래밍에 유용한 모듈.

re 정규표현식 모듈

정규표현식은 특정한 규칙을 가진 문자열을 표현하는데 사용되는 형식 언어이다.

함수명 설명
re.search(pattern,string[,flags]) string에 pattern이 존재하는지 검색 후 match 인스턴스 반환
re.match(pattern,string[,flags]) string맨 처음부터 pattern이 존재하면 match 인스턴스 반환
re.split(pattern,string[,maxsplit=0]) pattern을 구분자로 string을 분리해 리스트로 반환
re.findall(pattern,string[,flags]) string에서 pattern과 매치되는 것들을 리스트로 반환
re.finditer(pattern,string[,flags]) ”” 이터레이터 객체로 반환
re.sub(pattern,repl,string[,count]) string에서 pattern과 일치하는 부분에 대해 repl로 교체해서 결과 문자열을 반환
re.subn(pattern,repl,string[,count]) ”” (결과 문자열,매칭 횟수)를 튜플로 반환
re.escape(string) 영문자,숫자가 아닌 문자에 대해 백슬래시 문자를 추가
re.compile(pattern[,flags]) pattern을 컴파일해서 정규표현식 객체로 반환
bool(re.match('[0-9]*th;,'35th'))	# match 객체 반환
-> True
bool(re.search('[0-9]*th;,'35th'))
-> True
bool(re.match('[0-9]*th;,'     35th'))	# match는 맨앞부터 비교시작
-> False
bool(re.search('[0-9]*th;,'     35th'))
-> True
re.split('[:. ]+','apple Orange:banana tomato')	# split
-> ['apple','Orange','banana','tomato']

re.findall(r"app\w*","application orange apple banana") # findall
-> ['application','apple']

re.sub("-","","820101-1234567") # sub
-> '8201011234567'
  • re.compile()

동일한 패턴을 연속적으로 검색할 경우 정규식을 반복해서 써야하므로 비효율적임.
효율적으로 하고자 compile()을 이용하여 정규표현식 객체를 생성.

re.findall(r"app\w*","application orange apple banana") # findall
re.findall(r"app\w*","there are many apples") # findall

c = re.compile(r"app\w*")	# re. 대신에 c.함수명 으로 사용
c.findall("application orange apple banana")	# 같은 결과 반환
c.findall("there are many apples")

match 객체

  • 검색된 결과를 효율적으로 처리할 수 있는 기능 제공
  • match(), search()의 수행결과로 생성
m = telChecker.match('012-3456-7890')
m.groups()	# 문자열 집합을 튜플로 반환
-> ('012','3456','7890')
m.group()	# 문자열 반환
-> '012-3456-7890'
m.start() 	# 문자열 시작 인덱스
-> 0
m.end()		# 문자열 전체의 마지막 인덱스
-> 13
m.string	# 매칭의 대상이 되는 원본 문자열
-> '012-3456-7890'

queue 모듈

널리 쓰이는 자료구조인 큐 & 스택을 제공하는 모듈.

클래스 설명
queue.Queue(maxsize) FIFO 큐 객체 생성
queue.LifoQueue(maxsize) LIFO (스택) 객체 생성
queue.PriorityQueue(maxsize) 우선순위 큐 객체 생성. 입력되는 데이터는 (순위,아이템)의 튜플로 입력되며, 숫자가 작을수록 순위가 높다.
q = queue.Queue()
q.put("apple")
q.put("banana")
q.put(10)
q.qsize()
-> 3
q.get()
-> "apple"
q.get()
-> "banana"

Comments