특정한 패턴과 일치하거나 패턴(정규표현식)이 포함되어있는 행에 대한 필터링
다음 예제 코드는 어떤 행의 값이 특정 패턴과 일치하는지 판별, 패턴과 일차하는 값을 갖는 행의 데이터셋 출력
- 데이터셋에서 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) 에서 확인가능....)
'Python' 카테고리의 다른 글
[CSV] 열의 헤더를 사용하여 특정 열을 선택 (0) | 2018.11.27 |
---|---|
[CSV] 열의 인덱스 값을 사용하여 특정 열을 선택 (0) | 2018.11.27 |
[CSV] 특정 집합의 값을 포함하는 행의 필터링 (0) | 2018.11.24 |
[CSV] 특정 조건을 충족하는 행의 필터링 (0) | 2018.11.23 |
[CSV] 파일 읽고 쓰기(2) (0) | 2018.11.22 |