Python에서 문자열을 원하는 길이까지 반복하는 방법
문자열을 정확히 n자 길이가 되도록 반복하고 싶다면, 먼저 전체 문자열을 n // len(s)번 반복한 뒤, 남은 길이(n % len(s))만큼의 문자를 잘라서 뒤에 붙이는 방식으로 구현할 수 있습니다.
방법 1: 전체 반복 후 남은 문자 잘라 붙이기
아래 예제는 전체 반복 횟수를 계산하여 문자열을 만들고, 마지막에 부족한 길이만큼 슬라이싱으로 채워 넣습니다.
def repeat_n(string, n):
l = len(string)
full_rep = n // l # 전체 반복 횟수 계산
ans = ''.join(string for i in range(full_rep))
# 남은 문자를 끝에 추가
return ans + string[:n % l]
print(repeat_n('asdf', 10))
실행 결과:
asdfasdfas
'asdf'는 4글자이므로 2번(8글자) 반복된 뒤, 남은 2글자인 'as'가 이어 붙어 총 10글자의 문자열이 완성됩니다.
방법 2: 곱셈 연산자(*) 활용하기
Python에서는 문자열에 곱셈 연산자(*)를 사용하면 훨씬 간결하게 같은 결과를 얻을 수 있습니다. 필요한 길이보다 한 번 더 반복한 뒤, 앞에서부터 n자까지만 잘라내는 방식입니다.
def repeat_n(string_to_expand, n):
return (string_to_expand * ((n // len(string_to_expand)) + 1))[:n]
print(repeat_n('asdf', 10))
실행 결과:
asdfasdfas
정리
두 방법 모두 동일한 결과를 반환하지만, 곱셈 연산자(*)를 활용한 두 번째 방법이 코드가 짧고 가독성이 좋아 실무에서 더 많이 사용됩니다. 다만 n이 0보다 작거나 빈 문자열을 입력하면 오류가 발생할 수 있으므로, 실제 프로젝트에서는 입력값 검증 로직을 함께 추가하는 것이 좋습니다.