문자열 리스트의 요소들 중에 공백(' '), 빈문자(''), 줄바꿈(\n) 문자들이 포함된 경우가 있는데, 이런 불필요한 문자열들을 제거하여 정리하는 방법에 대해서 알아보겠습니다.

["apple", "banana", " ", "cherry", "\n", "date"]

1. isspace(), strip()을 이용한 방법

isspace()은 문자열에 공백이 있을 때 true를 리턴하며, strip()은 문자열의 앞/뒤의 공백을 제거합니다.

빈문자열, 공백 문자, 개행 문자에 대해서 isspace()은 다음과 같은 결과를 출력합니다.

print("\n".isspace()) # true
print("".isspace())   # false
print(" ".isspace())  # true

이것을 이용하여 아래와 같이 리스트 컴프리헨션과 함께 공백 문자, 줄바꿈 문자를 제거할 수 있습니다.

  • item.isspace() : 공백 문자, 개행문자를 필터링
  • item.strip() != "" : 공백 문자를 필터링
mylist = ["apple", "banana", " ", "cherry", "\n", "date"]
cleaned_list = [item.strip() for item in mylist if not item.isspace() and item.strip() != ""]
print(cleaned_list)

Output:

['apple', 'banana', 'cherry', 'date']

2. filter()를 이용한 방법

isspace(), strip()를 사용하는 것은 동일하지만, 리스트 컴프리헨션 대신에 filter() 함수를 사용하여 다음과 같이 구현할 수 있습니다.

  • 모든 리스트 요소에 대해서 문자열 체크를 하고, 필터링하는 로직은 동일
  • filter()는 iterator를 리턴하며, list()로 리스트 객체로 변환
original_list = ["apple", "banana", " ", "cherry", "\n", "date"]
cleaned_list = list(filter(lambda x: not x.isspace() and x.strip() != "", original_list))
print(cleaned_list)

Output:

['apple', 'banana', 'cherry', 'date']

3. 정규표현식을 이용한 방법

정규표현식을 이용하여 \n 문자를 제거하고, filter()를 사용하여 빈문자열을 정리할 수 있습니다.

  • [re.sub(r'\s+', '', item) for item in original_list] : \n 또는 공백 문자(' ')를 빈문자열('')로 변환
  • list(filter(None, cleaned_list)) : 리스트의 빈 문자열을 삭제
import re

original_list = ["apple", "banana", " ", "cherry", "\n", "date"]
cleaned_list = [re.sub(r'\s+', '', item) for item in original_list]
cleaned_list = list(filter(None, cleaned_list))  # 빈 문자열 제거
print(cleaned_list)

Output:

['apple', 'banana', 'cherry', 'date']