정규표현식, 파이썬 내장함수

seongyong·2021년 7월 8일
0

컴퓨터 공학 기본

목록 보기
1/8
post-custom-banner

학습내용

정규표현식

  • 메타문자

원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자

. ^ $ * + ? { } [ ] \ | ( )

[] : 문자 클래스, [] 사이의 각 문자들과 매치

[0-9] : 숫자모두

[^0-9] : ^는 []안에 들어가면 not이라는 의미를 가짐

[\d] : 숫자와 매치

[\D] : 숫자 아닌 것과 매치

[\s] : whitespace 문자와 매치, \t \n 등

[\S] : whitespace가 아닌것과 매치

[\w] : 문자 + 숫자와 매치

[\W] : 문자 + 숫자가 아닌것과 매치

a.b : 'a' + 모든문자 + 'b'

a[.]b : 'a.b' 와 매치

* : 0회 이상 반복

+ : 1회 이상 반복

{3,5} : 반드시 3회부터 5회까지 반복

{0,} : *과 같음

{1,} : +과 같음

? : 있어도되고 없어도 된다 = {0,1}

  • 파이썬 정규 표현식
import re

re.compile() # 정규표현식을 컴파일, 객체로써 사용가능
re.match() # 문자열의 처음부터 정규식과 매치되는지 조사
re.search() # 문자열 전체를 검색하여 정규식과 매치되는지 조사
re.findall() # 정규식과 매치되는 모든 문자열을 리스트로 돌려줌
re.finditer() # 정규식과 매치되는 모든 문자열을 반복 가능한 객체로 돌려줌, 각 요소는 match 객체

EX

p = re.compile('[a-z]+')

m = p.match("python")
n = p.match("3 python")

m은 match객체를 돌려받고, n은 None을 돌려받음

p = re.compile('[a-z]+')

m = p.search("python")
n = p.search("3 python")

search는 문자열 전체에 대해 매치하기 때문에 m,n 모두 매치됨

  • match 객체의 메서드

group() : 매치된 문자열을 돌려줌

start() : 매체된 문자열의 시작 위치를 돌려줌

end() : 매치된 문자열의 끝 위치를 돌려줌

span() : 매치된 문자열의 (시작, 끝)에 해당하는 튜플을 돌려줌

파이썬 기초

  • rjust
###"002"
"2".rjust(3, "0") #길이를 3으로 할껀데 0으로 나머지를 채워줄 것이고 오른쪽에 2를 두겠다.

###"50000"
"50000".rjust(5, "0") #길이를 5로 할껀데 이미 5여서 아무것도 안채워짐.
  • zfill(width)

rjust랑 비슷, 무조건 0으로 채움

  • split()
string.split(" ") # space로 나눠줌
  • copy, deepcopy
import copy

import copy
list_var = [[1,2],[3,4]]
list_var_deepcopy = copy.deepcopy(list_var)
list_var_copy = list_var.copy()

list_var[1].append(5)

print(list_var)  # 원래 변수

print(list_var_deepcopy)  # deepcopy : append와 같은 메소드를 써도 값이 변경되지 않음

print(list_var_copy)  # copy : 원본이 변경되었으므로 함께 변경됨

append말고 del같은 메서드를 사용하는 경우는 list_var_copy도 함께 변경되지않는데, 이 경우는 파이썬이 리스트 요소를 지우면서 새로운 주소를 할당하는게 아닌가 싶다.

  • list.remove(value) : 값으로 제거

  • del(list[index]) : 인덱스로 제거

  • list.pop() : 마지막 요소 제거

  • list.sort : 원본 리스트 정렬, 반환값 없음

  • sorted(list) : 정렬된 리스트를 반환

  • sorted(l, key=itemgetter(0,1,2)) : itemgetter에 작성된 인덱스 순으로 정렬

  • dic.get(x, '디폴트 값') : x의 value값을 반환, 없으면 디폴트 출력

  • filter() : 특정 조건으로 걸러서 걸러진 요소들로 iterator객체를 만들어서 리턴

# 리스트 생성
fellowship = ['frodo', 'samwise', 'merry', 'pippin', 'aragorn', 'boromir', 'legolas', 'gimli', 'gandalf']

# 람다함수적용
result = filter(lambda member: len(member) > 6, fellowship)

# 리스트형태로 변환
result_list = list(result)

# 결과출력
print(result_list)
  • reduce(), 집계함수
# functools 모듈 사용
from functools import reduce

# 리스트 생성
stark = ['robb', 'sansa', 'arya', 'brandon', 'rickon']

# 람다함수적용
result = reduce(lambda item1, item2:  item1+item2, stark)

# 결과출력
print(result)

집계 함수는 두개의 인자를 받는데, 첫번째 인자는 누적자(accumulator), 두번째 인자는 현재값(current value)가 넘어오게 된다.

post-custom-banner

0개의 댓글