본문 바로가기

python

교육 4일차 paramiko+requests+정규식

paramiko를 이용해 db에서 input값을 가져온뒤 그 값을 request로 보내고 response로 받은 값을 정규식을 통해 필터링 후의 값들을 db에 저장하는 실습을 하였다

(내가 이해한 대로 적어서 틀릴 수도 있음)

  1. paramiko를 활용하여서 진행한다.
  2. request는 HTTP를 사용하기 위한 라이브러리 get방식은 requests.get(), post방식은 requests.post, put방식은 requests.put(), delete방식은 requests.delete()
  3. 응답은 response로 받고 속성은 status_code(응답 상태 확인), headers(헤더정보 확인), cookies(쿠키정보 확인), encoding(데이터 인코딩 확인), text(str 타입의 데이터), content(bytes 타입의 데이터), json()(dict 타입의 데이터 일 경우 사용) 
  4. requests.get에 timeout을 걸어서 시간이 지나면 exception을 발생시키고 에러처리를 할 수 있다.
  5. for else 문:  for문이 중간에 빠져나오지 않고 완전히 다 실행 되면 실행하는 문장
  6. 정규표현식 정리
패턴 설명 예제
^ 이 패턴으로 시작해야 함 ^abc로 시작해야 함 (abcd,abc12 등)
$ 이 패턴으로 종료되어야 함 xyz$: xyz로 종료되어야 함 (123xyz, strxyz 등)
[문자들] 문자들 중에 하나이어야함. 가능한 문자들의 집합을 정의함 [Pp]ython: Python 또는 python
[^문자들] [문자들]의 반대로 피해야할 문자들의 집합을 정의함 [^aeiou] 소문자 모음이 아닌 문자들
| 두 패턴 중 하나이어야 함 (or) a|b a또는 b
? 앞 패턴이 없거나 하나 이어야 함 (Optional 패턴을 정의 할 때 사용) \d?: 숫자가 하나 있거나 없어야 함
+ 앞 패턴이 하나 이상이어야 함 \d+: 숫자가 하나 이상이어야 함
* 앞 패턴이 0개 이상이어야 함 \d*: 숫자가 없거나 하나 이상이어야 함
패턴{n} 앞 패턴이 n번 반복해서 나타나는 경우 \d{3} : 숫자 3개가 있어야 함
패턴{n,m} 앞 패턴이 최소 n, 최대 m번 반복해서 나타나는 경우(n또는 m 생략가능) \d{3,5}: 숫자가 3개 또는 4개 또는 5개 있어야 함
\d 숫자 0~9 \d\d\d: 0~9 범위의 숫자 3개 의미
\w 문자 \w\w\w : 문자 3개를 의미
\s 화이트 스페이스(공백)[\t,\n,\r,\f]와 동일 \s\s : 화이트 스페이스 문자 두개 의미 (\r\n,\t\t 등)
. 뉴라인(\n)을 제외한 모든 문자를 의미 .{3} : 모든 문자3개 (F15, 0x0 등)

파이썬에서 정규 표현식을 지원하는 re 모듈

re(regular expression) 모듈제공

사용 예) 

>>> import re

>>> p = re.compile('ab*')

 

re.compile을 사용하여 정규 표현식을 컴파일한다. re.compile의 리턴값을 객체 p(컴파일된 패턴 객체)에 할당해 그 이후의 작업을 수행할 것이다.



정규식을 이용한 문자열 검색 메서드

 

Method 목적  
match() 문자열의 처음부터 정규식과 매치되는지 조사한다.  
search() 문자열 전체를 검색하여 정규식과 매치되는지 조사한다.  
findall() 정규식과 매치되는 모든 문자열(substring)을 리스트로 리턴  
finditer() 정규식과 매치되는 모든 문자열 (substring)을 반복 가능한 객체로 리턴한다.  



정규식 그룹화 구문

 

그룹화 구문은 파이썬의 정규식을 하위 표현식 또는 그룹으로 나누며 다음과 같은 목적으로 사용됨

  1. 그룹화 : 그룹은 단일 구문 엔티티를 나타냅니다. 추가적인 메타 문자는 전체 그룹을 하나의 단위로 하여 적용됩니다.
  2. 캡쳐 : 일부 그룹화 구문은 그룹의 하위 표현식과 일치하는 검색 문자열 부분도 캡처

 

그룹화

 

정규식 설명 매치 예제
bar+ +가 문자 ‘r’에만 적용 된다. ‘ba’ 뒤에 하나 이상의 ‘r’과 매치 ‘bar’,’barr’,’barrr’
(bar)+ +가 ‘bar’에 적용된다. 한 개 이상의 ‘bar’과 매치 ‘bar’, barbar’,’barbarbar’

 

캡쳐

group(index= 1부터 시작) 함수 ()감싼 부분 중 index에 해당하는 부분 반환 index 0은 전체 부분 (default)

group(): 정규식 전체의 일치부분을 찾음

groups(): 명시적으로 캡처(괄호로 감싼 부분)한 부분을 반환한다.

 

예시

m = re.search('\d{4}-(\d?\d)-(\d?\d)', '1868-12-10')

print('m:', m)

 

print('m.group():', m.group())

 

for i in range(0, 3):

    print('m.group({}): {}'.format(i, m.group(i)))

 

print('m.groups():', m.groups())

결과

m: <_sre.SRE_Match object; span=(0, 10), match='1868-12-10'>

m.group(): 1868-12-10

m.group(0): 1868-12-10

m.group(1): 12

m.group(2): 10

m.groups(): ('12', '10')

 

비 캡쳐 그룹은 이해 못함

하는 법은 (?:’정규식’)으로 사용함

 

반응형

'python' 카테고리의 다른 글

7일차  (0) 2024.02.07
6일차  (1) 2024.02.07
5일차 교육  (0) 2024.02.06
교육 3일차 paramiko  (0) 2024.02.01
교육 1일차 + 2일차  (0) 2024.01.31