Python

[Python] 문자열 내에 리스트(배열) 안에 있는 문자가 포함되어있는지 검사하기

메바동 2021. 8. 30. 14:59
728x90
any() 함수를 사용한다.
check_str = ['apple', 'banana', 'orange']

target_str = 'I eat banana'

if any(str in targer_str for str in check_str):
	# 있을 경우 if 문 실행
	print(target_str)

 

 

Python에서 문자열 내에 리스트(배열) 안에 있는 문자가 포함되어있는지 검사해야 하는 상황이 생겼다.

 

String과 String을 비교할 경우에는 find() 혹은 index()를 사용하면 되는데 리스트는 따로 함수가 없는 것 같았다.

참고로 find()와 index() 함수는 모두 문자열 내에서 인수로 전달된 문자나 문자열에 해당하는 인덱스 위치를 찾아주는 함수인데 차이점은 다음과 같다.

 

find()는 찾는 문자나 문자열이 없을 경우 -1 값을 반환한다. 따라서 -1이 반환될 경우 해당 문자나 문자열이 존재하지 않는 것이다.

index()는 찾는 문자나 문자열이 없을 경우 ValueError가 발생한다. 따라서 index() 함수를 사용할 경우 ValueError가 발생하는 예외를 처리해주어야 한다.

 

다시 본론으로 돌아가서 문자열 내에 리스트(배열) 안에 있는 문자가 포함되어있는지 검사하는 방법은

any() 함수를 사용하면 해결할 수 있었다.

 

any() 함수는 인수로 전달된 자료형 중 True가 하나라도 있을 경우 True를 반환하는 함수이다.

 

예를 들어

list = [False, True, False]
any(list)

의 결과는 True가 된다.

 

 

아래와 같이 사용하면 url_str에 valid_urls에 있는 문자열 중 하나라도 가지고 있다면 url_str을 출력하게 된다.

valid_urls = ['mebadong', '메바동']

url_str = 'https://mebadong.tistory.com'

if any(valid_url in url_str for valid_url in valid_urls):
	print(url_str)

 

이 코드는 문자열에 리스트 안에 있는 문자가 포함되어있는지 검사만 해줄 뿐이고, 어떤 문자에 해당하는지 확인할 수 없다.

해당 기능을 원할 경우 반복문을 돌려야 하는 것 같다.

 

 

 

 

 


참고
https://stackoverflow.com/questions/6531482/how-to-check-if-a-string-contains-an-element-from-a-list-in-python

 

728x90