숫자로만 이루어진 문자열을 일정한 길이(K자리)의 정수 단위로 잘라내야 하는 경우가 종종 있습니다. 이럴 때는 간단한 반복문(iteration)과 함께 내장 함수인 int(), 그리고 리스트의 append() 메서드를 활용하면 손쉽게 해결할 수 있습니다.
예제 코드
아래는 숫자 문자열을 4자리씩 끊어 정수 리스트로 변환하는 예제입니다.
my_string = '69426874124863145'
print("문자열 : ")
print(my_string)
K = 4
print("K 값 : ")
print(K)
my_result = []
for index in range(0, len(my_string), K):
my_result.append(int(my_string[index : index + K]))
print("분할 결과 리스트 : ")
print(my_result)
print("정렬 후 결과 리스트 : ")
my_result.sort()
print(my_result)출력 결과
문자열 : 69426874124863145 K 값 : 4 분할 결과 리스트 : [6942, 6874, 1248, 6314, 5] 정렬 후 결과 리스트 : [5, 1248, 6314, 6874, 6942]
코드 설명
숫자 문자열을 정의하고 콘솔에 출력합니다.
분할 단위가 될 K 값을 정의하고 출력합니다.
결과를 담을 빈 리스트를 생성합니다.
range(0, len(my_string), K)를 사용해 K칸씩 건너뛰며 인덱스를 순회하고, 슬라이싱([index : index + K])으로 해당 범위의 문자열을 추출한 뒤int()로 정수형으로 변환합니다.변환된 값은
append()메서드로 빈 리스트에 차례대로 추가됩니다.분할된 결과 리스트를 콘솔에 출력합니다.
sort()메서드로 리스트를 오름차순 정렬하여 다시 출력합니다.
참고 사항
문자열의 길이가 K로 나누어 떨어지지 않으면, 마지막 조각은 남은 자릿수만큼만 추출됩니다. 위 예제에서 마지막 요소가
5인 이유가 바로 이 때문입니다.같은 작업은 리스트 컴프리헨션을 사용하면 한 줄로도 처리할 수 있습니다.
my_result = [int(my_string[i : i + K]) for i in range(0, len(my_string), K)]