[Day5] 파이썬으로 데이터 다루기
-
File / Exception / Log Handling
-
Python data handling
중요
정규식
정규 표현식의 기초, 메타 문자
그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자
. ^ $ * + ? { } [ ] \ | ( )
문자 클래스 []
문자 클래스로 만들어진 정규식은 "[ ] 사이의 문자들과 매치"
라는 의미를 갖는다.
문자 클래스를 만드는 메타 문자인 [ ] 사이에는 어떤 문자도 들어갈 수 있다.
정규 표현식이 [abc]라면 이 표현식의 의미는 "a, b, c 중 한 개의 문자와 매치"를 뜻한다. 즉, 각각의 문자 하나씩 or로 연결 되어 있다고 생각하면 된다. 이해를 돕기 위해 문자열 "a", "cat", "dude"가 정규식 [abc]와 어떻게 매칭되는지 보면,
- 'a'는 정규식과 일치하는 문자 'a'가 매칭
- 'cat'은 정규식 'c'와 매칭
- 'dude'는 정규식 a,b,c중 하나도 매칭되는것이 없다
[]안에 -
을 사용하면 두 문자 사이의 범위를 의미 한다. 이때 범위가 맞는 문자여야 한다.
[0-9]는 [0123456789]와 동일한 의미를 가지게 된다.
자주 사용하는 문자 클래스
\d
- 숫자와 매치, [0-9]와 동일한 표현식이다.\D
- 숫자가 아닌 것과 매치,[^0-9]
와 동일한 표현식이다.\s
- whitespace 문자와 매치,[ \t\n\r\f\v]
와 동일한 표현식이다. 맨 앞의 빈 칸은 공백문자(space)를 의미한다.\S
- whitespace 문자가 아닌 것과 매치,[^ \t\n\r\f\v]
와 동일한 표현식이다.\w
- 문자+숫자(alphanumeric)와 매치,[a-zA-Z0-9_]
와 동일한 표현식이다.\W
- 문자+숫자(alphanumeric)가 아닌 문자와 매치,[^a-zA-Z0-9_]
와 동일한 표현식이다.
Dot(.)
.
메타 문자는 줄바꿈 문자인 \n
을 제외한 모든 문자와 매칭.
a.b → 'a'+ 모든 문자 + 'b'와 매칭
a[.]b → a.b와 매칭
여기서 []
메타 문자를 사용하면 .
은 순수 문자 그 자체로 인식하게 된다.
반복(*), 반복(+)
*
메타 문자가 나온 바로 앞에 있는 문자가 (0~무한대)반복 될 수 있다는 의미
+
메타 문자가 나온 바로 앞에 있는 문자가 (1~무한대)반복 될 수 있다는 의미
반복({m,n}, ?)
{m}
: 해당 메타 문자 앞에 나온 문자가 반드시 m회 반복을 의미{m,n}
: 해당 메타 문자 앞에 나온 문자가 m~n회 반복을 의미?
: 해당 메타 문자 앞에 나온 문자가 있어도되고 없어도 되는걸 의미 {0,1}과 같은의미이다.
정규식을 이용한 문자열 검색
match()
: 문자열의 처음부터 정규식과 매치되는지 조사한다.search()
: 문자열의 처음부터 정규식과 매치되는지 조사한다.findall()
: 정규식과 매치되는 모든 문자열(substring)을 리스트로 돌려준다.finditer()
: 정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 돌려준다.
findall함수를 제외하고 나머지 함수들의 리턴값은 match 객체를 반환한다.
match 객체의 메서드
group()
: 매치된 문자열을 돌려준다.start()
: 매치된 문자열의 시작 위치를 돌려준다.end()
: 매치된 문자열의 끝 위치를 돌려준다.span()
: 매치된 문자열의 (시작, 끝)에 해당하는 튜플을 돌려준다.
참고자료
피어세션
- namespace 와 scope 차이
-
ref : https://docs.python.org/3/tutorial/classes.html#tut-scopeexample:~:text=9.2.1. Scopes and Namespaces Example
- nonlocal은 scope_test안에 선언
- global은 함수 최상단 namespace에 선언
-
월요일까지 깃공부해오기 - 몰랐던 부분 학습정리처럼 정리해오기
-
morsecode.py 코드리뷰
'AI > 부스트 캠프 AI tech' 카테고리의 다른 글
[Day9] Pandas II,확률론 (0) | 2021.01.28 |
---|---|
[Day8] Pandas I,딥러닝 학습방법 이해하기 (0) | 2021.01.27 |
[Day7] 경사하강법 (0) | 2021.01.26 |
[Day6] Numpy/벡터/행렬 (0) | 2021.01.25 |
[Day4] 파이썬 기초 문법III (0) | 2021.01.21 |
[Day3] 파이썬 기초 문법II (0) | 2021.01.20 |
[Day 2] 파이썬 기초 문법 (0) | 2021.01.19 |
파이썬/AI 개발환경 준비 (0) | 2021.01.18 |