저번 주에는 조대연, 장철원 강사님을 통해 파이썬의 다양한 모듈을 학습할 수 있었다. 여태까지 쓴 글들은 그 때 공부하고 복습할 겸 썼던 글이었다.
조대연 강사님은 파이썬 전반 + pandas, 장철원 강사님은 크롤링, 정규표현식 re를 가르치셨다.
조대연 강사님의 강의는 시간이 촉박한 나머지 너무 급하게 하는 느낌이라 그렇게 기억에 남지 않았다. 어차피 기초의 내용이었고, 중요한건 pandas인데, 실습 과정에서 tab, shfit + tab으로 함수를 쓰는 법을 익혔다.
데이터 전처리 같은 경우 함수가 너무나도 많고, 그 안에 써야하는 변수를 다 알 수 없기 때문에, shift + tab으로 함수의 정보를 볼 수 있는건 무척이나 도움되는 일이다.
장철원 강사님은 html의 구조, requests, BeautifulSoup, selenium, api, re 등을 가르치셨는데, 이 분의 강의시간은 넉넉하셨는지 적절한 실습시간이 주어져 많이 공부할 수 있었다.


이 때 배운 것은 여태까지 작성한 블로그에 잘 녹여냈다고 생각한다.
정규표현식 re는 따로 쓰지 않았었는데, 사실 이 과정에서는 re를 읽는 방법을 학습한 것이지, 잘 쓰는 법까지는 조금... 많이 어렵다.
그냥 re 쓰는 법을 파고들면 은근 deep하다.
그래서 그냥 여기서 적당히 수업 내용을 쓸려고 한다.


해당 사이트에 들어가면 이런 식으로 연습이 가능한데, python으로 표현하면 왼쪽과 같이 쓰면 된다.
pattern = r'패턴'
re.findall(pattern, text)
이렇게 기억하면 될 것이다.
여기서 메타문자를 많이 쓰는데, 메타 문자란, 특정 의미나 기능을 담은 문자라고 생각하면 된다.

re'[a-z]'는 text에서 a~z까지 찾아낸다고 보면된다.
re'[a-zA-Z]'는 모든 영문자를 찾아내고
re'[a-zA-Z0-9]'는 모든 영문자와 숫자를 찾아낸다.


하지만 일일이 [a-z], 이런 식으로 쓰는게 귀찮은건지 \d, \w 같은 표현이 있다.






문자 뒤에 '*'을 붙이면, 그 앞에 있는 문자를 0~무한까지 인식할 수 있게 된다.
pattern = r'ca*t' 이면
text 내용이 ct, cat, caaaaaaaat이든 다 인식한다는 의미이다.

+는 1~무한.
cat은 인식하지만 ct는 인식하지 못한다.

{m, n}은 m이상 n이하.

?는 0,1만 인식한다.

이를 잘 이용하면 다음과 같이 나타낼 수도 있다.

좀 더 심화해서 알아보면...

...이래서 정규표현식이 은근 deep하다는 것이다.
여태까지 정리한 것만 해도 꽤 내용이 되는 것 같은데, html의 내용에서 할려고 하니 어떻게 해야할지 모르겠고 막막하다.
좀 더 쓸 일이 있으면 더 배우고 정리하고자 한다.
여태까지 배운 것만으로는 좀 모자른다고 생각해서 re 글은 따로 정리하지 않고 후기를 남겼다.
'Upstage AI Lab 6기' 카테고리의 다른 글
| 컴퓨터 공학 개론 후기 (1) | 2024.12.11 |
|---|---|
| 프로젝트 수행을 위한 이론 1:Statistic 후기 (3) | 2024.12.03 |
| 크롤링 (API, json) (0) | 2024.11.25 |
| 웹크롤링 (selenium) (0) | 2024.11.23 |
| 웹크롤링 (BeautifulSoup) (0) | 2024.11.22 |