본문 바로가기
Python/그 외

문자열 포함 여부 확인하기(find(), in, not in)

by ahfmrjttb 2021. 8. 5.

문자열 중에서 자신이 원하는 문자열이 있는지 확인해야 할 때가 있다. 물론 확인해야 하는 문자열 갯수가 적고 길이까지 짧다면 직접 확인이 가능하겠지만, 일을 하다 보면 그런 경우는 거의 없다. 이러한 경우에 어떻게 하는지 알아보자.

 

 

(1) find 함수 이용

 

: 첫 번째 방법은 find 함수를 이용하는 것이다. 바로 예제로 이해해보자.

이렇게 find 함수에 내가 찾기를 원하는 문자열을 넣어주면, 해당 문자열이 있는 경우 해당 문자열이 있는 index값을 반환한다. text 변수에서 10번째 index가 P00H의 P이기 때문에 10을 반환한 것이다. 그럼 내가 찾기를 원하는 문자열이 없는 경우는 어떨까? 이 경우는 -1을 반환한다.

 

 

text 변수에 PIGLET이라는 문자열이 없으므로 -1을 반환했다.

 

앞서 본 예제들은 엄청 간단한 것이고 필자의 경우는 list에 변수들이 많을 때 find를 이용하여 필자가 원하는 문자열을 찾았다. 이 역시 예제로 직접 보도록 하자. 

 

Region_Var_All_2020_1에 엄청 많은 주소들이 list로 저장되어 있다. 여기서 필자는 경기 수원시와 충북 청주시에 해당하는 지역들을 모두 찾고 싶었다. 따라서, 이런 식으로 코드를 짰다.

 

 

- 1번째 줄 : 먼저 찾고자 하는 지역을 list로 만든다.

- 3번째 줄 : for in을 통해 list에 있는 지역들을 불러온다. wanna_region에는 wanna_list의 요소들(wanna_list[0], wanna_list[1])이 차례로 입력된다.

- 4번째 줄 : 3번째 줄과 같은 구문으로 region에 Region_Var_All_2020_1의 요소들(Region_Var_All_2020_1[0], Region_Var_All_2020_1[1], Region_Var_All_2020_1[2], ....)이 차례로 입력된다.

- 5번째 줄 : 반복문을 돌면서 각 region 마다 find 함수를 적용해 wanna_list에 있는 요소들이 있는지 확인한다.

- 6~7번째 줄 : 결과값이 -1이면 찾고자하는 문자열이 없는 것이므로 !=를 통해 -1이 아닌 경우 region을 print한다.

 

이렇게 Region_Var_All_2020_1에 저장되어 있는 많은 주소들 중에서, '수원시', '청주시'에 해당하는 주소들만 추출할 수 있다. 

 

 

(2) in, not in

 

: 두 번째 방법은 in, not in을 이용하는 것이다. 이도 역시 바로 예제로 이해해보자.

이렇게 in을 이용했을 때 찾고자하는 문자열이 있다면 True를, 없다면 False를 반환한다. not in은 in과 반대이다.

 

 

not in은 해당 문자열이 포함되지 않는지를 체크하는 것이므로 첫 번째 Cell은 "P00H"가 text 변수에 포함되어 있기 때문에 False를 반환한 것이고, 두 번째 Cell은 "PIGLET"이 text 변수에 포함되어 있지 않으므로 True를 반환한 것이다.

 

 

in, not in 방법 역시 아까 주소를 찾았던 상황에 그대로 이용할 수 있다.

- 1~4번째 줄 : find() 함수에서 설명했던 것과 동일하다.

- 5번째 줄 : 반복문을 돌면서 각 region 마다 in를 적용해 wanna_list에 있는 요소들이 있는지 확인한다.

- 6~7번째 줄 : 결과값이 True이면 찾고자하는 문자열이 있는 것이므로 region을 print한다. 

 

 

만약 in 대신에 not in을 이용한다면 5~6번째 줄만 바꿔주면 된다.

- 1~4번째 줄 : find() 함수에서 설명했던 것과 동일하다.

- 5번째 줄 : 반복문을 돌면서 각 region 마다 not in를 적용해 wanna_list에 있는 요소들이 있는지 확인한다.

- 6~7번째 줄 : 결과값이 False이면 찾고자하는 문자열이 있는 것이므로 region을 print한다. 

 

 

 

 

참고 사이트

    - https://ddolcat.tistory.com/676

 

댓글