HOWTO · Python
Python에서 문자열 N번 반복
Python에서 문자열을 고정된 횟수만큼 반복하는 방법과 지정한 문자 길이까지 문자열을 만드는 방법을 알아봅니다.
이 페이지의 내용
Python에서는 문자열에 정수를 곱해 문자열 전체를 정해진 횟수만큼 반복할 수 있습니다. 목표 문자 수에 맞는 문자열을 만들려면 문자열을 충분히 반복한 다음 결과를 슬라이스하면 됩니다. 두 방법은 쓰임새가 다릅니다. 첫 번째 방법은 각 복사본을 온전히 유지하고, 두 번째 방법은 마지막 복사본의 일부에서 끝날 수 있습니다.
Python에서 * 연산자로 문자열을 N번 반복하기
필요한 복사본의 수를 알고 있다면 * 연산자를 사용하세요. 원본 텍스트가 차례로 이어진 새 문자열이 만들어집니다. 간단한 예를 살펴보겠습니다.
print("ha" * 3)
hahaha
출력은 hahaha입니다. 0을 곱하면 빈 문자열이 만들어집니다. 반복 횟수가 음수여도 빈 문자열이 만들어집니다. 애플리케이션에서 음수 입력을 허용하지 않으려면 곱하기 전에 횟수를 검증하세요. 횟수는 정수여야 합니다.
복사본 사이에 구분자를 넣으려면 반복된 시퀀스에 join()을 호출하면 됩니다. 예를 들어 ", ".join(["ha"] * 3)은 복사본 사이에 쉼표와 공백을 넣어 ha, ha, ha를 만듭니다. 구분자는 항목 사이에 들어갑니다. * 연산자만 사용하면 복사본이 바로 이어집니다. 일반적인 고정 횟수 반복 작업에는 문자열 곱셈이 가장 명확한 방법입니다.
Python에서 문자열을 지정한 길이만큼 반복하기
목표 길이에 맞추는 경우 마지막 복사본의 일부만 포함될 수 있습니다. 원본 문자열을 충분히 반복한 다음 요청한 문자 수만큼 결과를 슬라이스하세요. 다음 도우미 함수는 목표 길이가 음수이면 거부하고, 빈 원본 문자열로는 양수 길이를 만들 수 없다고 알립니다.
def repeat_to_length(text, target_length):
if target_length < 0:
raise ValueError("target_length must be nonnegative")
if not text and target_length > 0:
raise ValueError("text must not be empty for a positive target length")
if target_length == 0:
return ""
copies = (target_length + len(text) - 1) // len(text)
return (text * copies)[:target_length]
result = repeat_to_length("abc", 8)
print(result)
abcabcab
제시된 입력의 출력은 abcabcab입니다. 완전한 복사본 두 개 뒤에 다음 복사본의 처음 두 문자가 이어진 결과입니다. 올림 나눗셈 식은 필요한 복사 횟수를 계산하고, 슬라이싱은 요청한 길이에 정확히 맞춥니다.
목표 길이가 0이면 빈 문자열을 반환합니다. 원본 문자열이 비어 있으면 목표 길이 0만 만들 수 있습니다. 양수 길이를 요청하면 도우미 함수가 ValueError를 발생시킵니다. 음수 길이도 호출자가 오해할 수 있는 결과를 조용히 받지 않도록 ValueError를 발생시킵니다. 애플리케이션에 다른 정책이 필요하다면 이 도우미 함수를 사용하기 전에 해당 검사를 조정하세요.