문자열에서 특정 길이보다 긴 단어를 찾아야 하는 경우가 자주 있습니다. 이럴 때는 문자열을 공백을 기준으로 분리한 뒤 각 단어를 순회하면서, 단어의 길이를 주어진 길이와 비교하고 조건을 만족하는 단어만 결과로 반환하는 함수를 정의하면 됩니다.
예제 코드
아래는 위 로직을 구현한 전체 예제입니다.
def string_check(string_length, my_string):
result_string = []
words = my_string.split(" ")
for x in words:
if len(x) > string_length:
result_string.append(x)
return result_string
string_length = 3
my_string = "Python is always fun to learn"
print("The string is :")
print(my_string)
print("\nThe words in the string with length greater than", string_length, "is :")
print(string_check(string_length, my_string))
실행 결과
The string is : Python is always fun to learn The words in the string with length greater than 3 is : ['Python', 'always', 'learn']
코드 설명
string_check라는 이름의 함수를 정의하고, 기준 길이(string_length)와 대상 문자열(my_string)을 매개변수로 받습니다.조건에 맞는 단어를 담을 빈 리스트
result_string을 생성합니다.split(" ")메서드로 문자열을 공백을 기준으로 분리하여 변수에 저장합니다.분리된 단어들을 순회하면서 각 단어의 길이를 주어진 길이와 비교합니다.
단어의 길이가 기준 길이보다 크면
append()메서드로 결과 리스트에 추가합니다.모든 단어를 확인한 뒤 최종 결과 리스트를 반환합니다.
함수 외부에서 기준 길이와 문자열을 정의하고, 원본 문자열을 콘솔에 출력합니다.
마지막으로 함수를 호출하여 조건에 맞는 단어 목록을 화면에 표시합니다.
더 간결한 방법: 리스트 컴프리헨션
위 코드는 파이썬의 리스트 컴프리헨션(list comprehension)을 사용하면 한 줄로 더 간결하게 표현할 수 있습니다.
def string_check(string_length, my_string):
return [word for word in my_string.split() if len(word) > string_length]
동작 방식은 동일하지만 코드가 짧고 가독성이 좋아 실무에서 더 널리 사용되는 패턴입니다. 또한 split()처럼 인자 없이 호출하면 공백이 여러 개 연속으로 포함된 문자열도 자동으로 올바르게 처리해 주므로 더 안전합니다.