're 모듈'에 해당되는 글 1건

  1. 2018.11.26 [CSV] 패턴, 정규 표현식을 활용한 필터링

특정한 패턴과 일치하거나 패턴(정규표현식)이 포함되어있는 행에 대한 필터링

 

다음 예제 코드는 어떤 행의 값이 특정 패턴과 일치하는지 판별, 패턴과 일차하는 값을 갖는 행의 데이터셋 출력

- 데이터셋에서 Date열의 데이터 값이 5열이후에 '-04-'를 포함하는 모든행을 필터링

 

 

 

 

 


   3 import re


 

3행

- re모듈(정규 표현식 모듈)의 함수를 사용할 수 있도록 re 모듈 import

 


   8 pattern = re.compile(r'(?P<my_pattern_group>^....-04-.*)', re.I)


 

8행

- re모듈의 compile() 함수를 사용해 정규 표현식 변수(pattern) 생성

- r은 작은 따옴표 사이의 패턴이 원시 문자열임을 나타냄

- 메타문자 ?P<my_pattern_group> 는 <my_pattern_group>그룹에 포함되어있는 하위 문자열 필터링

- 본 예제의 패턴은 ^....-04-.* 임

- 캐럿(^)은 문자열이 시작하는 패턴을 검색

- 마침표(.)는 개행을 제외한 임의 문자 하나를 나타냄

- 별표(*)는 메타 문자 앞에 있는 문자가 0번이상 일치해야함을 나타냄

- 따라서 ^....-04-.* 는 개행문자를 제외한 임의문자 4개로 시작하고 5~8열은 -04- 이고 이후 개행문자를 제외한 모든 문자가 몇번이든 올수 있다는 의미

- 즉, 04월에 해당하는 모든 행을 필터링 하라는 의미

- re.I 인수는 정규 표현식이 대소문자를 구분하지 않음

 


 19          date = row_list[2]

 20          if pattern.search(date):

 21             print(row_list)

 22             fwriter.writerow(row_list)


 

19행

- 리스트 인덱싱을 이용해 csv파일에서 Date열을 추출하고 이를 date변수에 할당

20행

- re 모듈의 search 함수를 이용해 date변수에 할당된 값을 앞서 정의한 패턴으로 필터링

21, 22행

- 필터링된 패턴을 화면과 파일로 출력

 

(*) 출력파일로 설정한 r_filtering_value_match_pattern.csv를 통해 결과확인

(*) 소스코드 첨부(csv 파일은 [CSV]파일 읽고 쓰기(2) 에서 확인가능....)

 

5_filtering_value_match_pattern.zip

Posted by Roiz
,