리스트 안의 문자열에서 공백(스페이스)이 포함된 행을 걸러내고, 공백이 전혀 없는 행만 남기고 싶은 경우가 있습니다. 이럴 때는 리스트 컴프리헨션(list comprehension), 정규 표현식(regular expression), not 연산자, 그리고 any 메서드를 조합하면 간단하게 해결할 수 있습니다.
예제
아래는 실제 구현 예시입니다.
import re
my_list = [["python is", "fun"], ["python", "good"],["python is cool"],["love", "python"]]
print("The list is :")
print(my_list)
my_result = [row for row in my_list if not any(bool(re.search(r"\s", element)) for element in row)]
print("The resultant list is :")
print(my_result)출력 결과
The list is : [['python is', 'fun'], ['python', 'good'], ['python is cool'], ['love', 'python']] The resultant list is : [['python', 'good'], ['love', 'python']]
코드 설명
정규 표현식을 사용하기 위해 필요한
re모듈을 임포트합니다.문자열 리스트로 구성된 중첩 리스트를 정의한 뒤 콘솔에 출력합니다.
리스트 컴프리헨션으로 각 행(row)을 순회하면서, 정규 표현식의
search메서드로 해당 요소에 공백(\s)이 존재하는지 검사합니다.any메서드는 행 내부의 요소 중 하나라도 공백을 포함하면 True를 반환하며, 여기에not연산자를 결합해 공백이 없는 행만 최종 결과에 남게 됩니다.필터링된 결과는 별도의 변수에 할당됩니다.
최종 결과가 콘솔에 출력됩니다.