본문 바로가기
Python

[Python] 천 단위 콤마 찍는 함수와 필요성을 알아보자

by 산코디 2022. 12. 26.

오늘은 파이썬에서 '천 단위 콤마 찍기' 기능에 대해서 정리해 보려고 한다. 천 단위는 수치형 데이터에 세 자릿수마다 콤마를 찍어줘서 사용자의 가독성을 높여줄 수 있는 기능이다. 대단한 기능은 아니지만 개발을 하다 보면 생각보다 수치형 데이터의 가독성이 많이 떨어져서 업무 능률이 떨어지거나, 사용자의 가독성이 떨어져 서비스의 품질이 저하될 수 있다. 기능은 매우 간단하기 때문에 예제를 통해서 학습해 두면 업무에서 다양하게 활용할 수 있는 좋은 기능이다.



천 단위 콤마의 필요성

천 단위 콤마는 숫자를 표현할 때 가독성을 높이고 이해하기 쉽게 만들어 준다. 

가독성 향상
큰 숫자를 가독성 있게 표현하기 위해 사용하며, 숫자가 커질수록 숫자의 크기를 한눈에 파악하기 어려워지는데, 천 단위 콤마를 사용하면 숫자를 빠르게 이해할 수 있다.

비교
천 단위 콤마를 사용하면 숫자를 쉽게 비교할 수 있다. 예를 들어, "1,000,000"과 "10,000"을 비교할 때 천 단위 콤마가 없으면 숫자가 크게 차이나는 것을 인식하기가 어렵다.

문서 및 보고서
보고서나 문서를 작성할 때 큰 숫자를 표현해야 할 경우 천 단위 콤마를 사용하여 숫자를 명확하게 표현할 수 있다. 이는 독자가 숫자를 이해하고 해석하는 데 도움이 된다.

숫자 입력
숫자를 입력할 때 사용자가 실수로 잘못된 숫자를 입력하는 것을 방지하기 위해 천 단위 콤마를 사용할 수 있다. 사용자가 큰 숫자를 입력할 때 쉽게 실수할 수 있으므로 천 단위 콤마를 사용하면 입력을 보다 정확하게 할 수 있다.


이러한 이유로 천 단위 콤마는 숫자를 표현하고 사용하는 과정에서 매우 유용하고 필요한 요소가 된다.

 


천 단위 콤마의 활용 사례

파이썬에서 천 단위 콤마 함수를 사용한다면 다양한 환경에서 활용할 수 있다. 데이터 처리, 시각화, 보고서 자성 등 다양한 분야에서 유용하게 활용되며, 어떻게 활용되는지 확인해 보자.

금액
금액을 화폐 형식으로 표시할 때 사용되는데, 상품의 가격을 표시할 때, 결제 시스템에서 금액을 표시할 때 활용된다. 금액과 연관이 있기 때문에 문제가 될 요지가 크기 때문에 금액 관련 데이터를 표시할 때에는 천 단위 콤마를 반드시 사용해야 한다.

대용량 데이터
대용량 데이터를 다룰 경우에는 숫자를 보다 가독성 있게 표시할 수 있다. 특히 데이터베이스나 데이터 분석 작업에서 많은 양의 숫자를 처리할 때 유용하다. 방대한 데이터를 처리하면서 분석을 하게 된다면 수치형 데이터를 한 번에 확인하기 어려운데, 이러한 경우에 천 단위 콤마를 사용한다면 훨씬 더 가독성과 정확성을 높여줄 수 있다.

통계 및 분석
통계 또는 분석 결과를 보고할 때 숫자를 천 단위 콤마로 표시하여 읽기 쉽게 만든다. 이는 데이터의 추세를 파악하거나 비교할 때 도움이 된다.

사용자 입력 처리
사용자가 데이터를 입력할 때 숫자인 경우 유용하게 처리할 수 있다. 실시간으로 값을 입력하면서 콤마 처리를 해 준다면 실수할 확률이 줄어들고 입력을 정확성 높게 지원할 수 있다.

문서 작성
보고서나 문서를 작성할 때 큰 숫자를 표시할 때 사용될 수 있다. 이를 통해 문서를 확인하는 사람은 숫자를 빠르게 이해하고 처리할 수 있도록 도와준다.


이렇게 활용 사례를 통해서 파이썬의 천 단위 콤마 함수가 다양한 환경에서 유용하게 사용될 수 있다.


천 단위 콤마 함수 예제 소스 코드

천 단위 콤마를 추가하기 위해 간단하게 함수를 만들어 처리할 수 있도록 하였다.

def add_comma(num):
    """
    * 수치형 데이터 천단위 콤마 찍기 함수

    :param num:
    :return:
    """
    if not num:
        return num

    return format(int(num), ',')


if __name__ == '__main__':
    """
    * main 실행
    """

    # 숫자
    print('- 숫자 : %s' % add_comma(1000000))
    # 문자
    print('- 문자 : %s' % add_comma('1000000'))
    # 공백
    print('- 공백 : %s' % add_comma(''))

위의 코드는 천 단위 콤마를 추가하는 함수인 add_comma를 정의하였다.

add_comma(num) 함수는 입력된 숫자 또는 문자열을 정수로 변환하고, 해당 정수에 천 단위 콤마를 추가하여 반환한다. 이때, 입력값이 없거나 비어있는 경우에는 그대로 반환하게 된다.

add_comma 함수
해당 함수는 입력받은 num을 정수로 변환한 뒤 format 함수를 사용하여 천 단위 콤마를 추가한다. 그 후 반환된 값은 문자열 형태로 반환한다.

테스트 코드
숫자, 문자열, 공백을 각각 add_comma 함수에 전달하여 결과를 확인하고, 각 경우에 대해 천 단위 콤마가 올바르게 추가되는지 확인한다.

실행 결과

main 함수에서 숫자형, 문자형, 공백 각각 값을 넣고 함수를 호출하였을 경우 위와 같이 공백을 제외하고는 정상적으로 콤마가 잘 찍혀 나오는 결과 화면이다.


다음은 정수가 아닌 소수점이 포함된 값을 넘겼을 때 처리되는 코드를 확인해 보자.


소수 단위 값 천 단위 처리 예제 소스 코드

def add_comma(num):
    """
    * 수치형 데이터 천단위 콤마 찍기 함수

    :param num:
    :return:
    """
    # 공백 체크
    if not num:
        return num

    # str 체크
    if isinstance(num, str):
        # int 체크
        if is_integer(num):
            num = int(num)
        # float 체크
        else:
            num = float(num)

    # int 체크
    if isinstance(num, int):
        num = int(num)

    # float 체크
    if isinstance(num, float):
        num = float(num)

    return format(num, ',')


def is_integer(num):
    """
    * integer인지 활인

    :param num:
    :return:
    """
    try:
        float(num)
    except ValueError:
        return False
    else:
        return float(num).is_integer()


if __name__ == '__main__':
    """
    * main 실행
    """

    # int
    print('- int : %s' % add_comma(1000000))
    # float
    print('- float : %s' % add_comma(1000000.123))
    # 문자 int
    print('- 문자 int : %s' % add_comma('1000000'))
    # 문자 float
    print('- 문자 float : %s' % add_comma('1000000.123'))
    # 공백
    print('- 공백 : %s' % add_comma(''))

위의 소스 코드에서 눈여겨봐야 할 부분은 is_integer 함수와 isinstance 내장 함수다. 천 단위 콤마를 추가하는 add_comma 함수를 개선하여 입력값의 유형을 검사하고 적절한 처리를 수행하는 코드다. 그리고 소수점이 있는 숫자를 처리할 수 있도록 코드를 추가하였다.
 
is_integer : 문자형 수치 데이터 값이 int인지 아닌지 판별
isinstance : 데이터의 값이 어떤 type인지 판별

is_integer 함수는 주어진 값이 정수인지 여부를 확인하는 함수이며, 문자열을 실수로 변환하여 소수점 이하의 값이 존재하는 경우에는 정수로 간주하지 않는다. 
add_comma 함수는 입력값이 숫자인지 여부를 확인하고, 문자열인 경우 정수 또는 실수로 변환하여 처리한다. 이후, format 함수를 사용하여 천 단위 콤마를 추가한다. 주어진 값에 대해 add_comma 함수를 호출하여 결과를 확인한다. 정수, 실수, 문자열에 대해 각각 테스트하고, 콤마가 올바르게 추가되는지 확인할 수 있다.

실행 결과

int, float 문자 정수, 문자 실수 모두 정상적으로 출력이 되는 것을 확인할 수 있다.

 


locale 모듈을 사용하여 콤마 처리하기

locale 모듈을 사용한다면 위의 예제처럼 함수를 따로 구현하지 않아도 간단하게 콤마 처리가 가능하다. 그러나 콤마 처리하는 로직을 구현하면서 어떻게 처리할지 생각하고 고민하는 것이 실력을 빠르게 성장시킬 수 있는 방법이기 때문에 구현하였다.

import locale

# 지역 설정을 기기의 설정에 맞게 변경
locale.setlocale(locale.LC_ALL, '')

number = 1000000
formatted_number = locale.format_string('%d', number, grouping=True)

# 1,000,000
print(formatted_number)

위의 코드는 내장되어 있는 locale 모듈을 사용하여 숫자를 국적 및 지역 형식에 맞게 포맷을 변경하고, 천 단위로 콤마를 추가하는 예제 코드다.

local.setLocale(local.LC_ALL, '') 코드는 현재 사용자의 기기나 환경에 따라 해당 지역으로 설정이 되며, 빈 문자열을 전달하는 경우에는 환경에 맞는 설정으로 자동 설정된다.
formatted_number = locale.format_string('%d', number, grouping=True) 코드는 locale.format_string 함수를 사용해서 숫자의 형식을 포맷하는데, '%d'는 정수를 나타내는 서식 지정자이며, grouping=True는 천 단위 구분 기호(콤마)를 추가하도록 지정한다.
그리고 최종적으로 print를 호출하면 천 단위마다 콤마가 찍히는 것을 확인할 수 있다.



천 단위 콤마 사용 시 주의사항

파이썬에서 천 단위 콤마 함수를 직접 생성해서 사용하거나 간단하게 모듈을 사용할 때에는 여러 가지 상황을 고려해야 한다.

입력 유효성 검사
사용자로부터 입력받은 값이 숫자나 숫자로 변환 가능한 문자열인지 확인해야 한다. 이를 통해서 잘못된 형식의 데이터를 처리하거나 예기치 않은 오류를 방지할 수 있다.

부동 소수점 처리
숫자가 부동 소수점인 경우에도 적절한 형식을 유지하기 위해 소수점 이하의 값을 적절하게 처리해야 한다. 부동 소수점의 경우에는 정수 부분과 소수 부분을 분리하여 각각에 대해 콤마를 추가하는 것이 좋다.

다국어
숫자 형식은 지역에 따라 다를 수 있기 때문에 다국어 환경에서는 locale 모듈을 사용하여 지역화된 형식을 적용하는 것이 좋다. 또한, 문자열 내에 숫자 이외의 문자가 포함되어 있는지도 확인해야 한다.

예외 처리
함수 내에서 예외 처리를 적절히 수행하여 잘못된 입력에 대한 오류를 처리해야 한다. 이를 통해서 프로그램의 안정성을 높일 수 있다.


위와 같이 주희사항을 검토하여 천 단위 콤마 함수 기능을 구현하여 사용하는 것이 좋다.


마무리

오늘은 파이썬에서 천 단위 콤마 함수를 만들어보고, 어떤 특징과 주의사항이 있는지 정리해 보았다. 프로그램을 개발하다 보면 가독성이 정말 중요하다고 생각하는데, 그중에서 수치형 데이터는 금액과 연관이 있을 수도 있고, 지표나 통계 등 정확성이 필요한 경우가 많다. 그래서 더욱 정확성이 중요한데, 이러한 경우에 반드시 콤마 처리를 하여 가독성과 정확성을 높여주는 것이 좋다.

그리고 마지막에 정리한 바와 같이 locale 모듈을 사용해서 간단하게 처리하는 방법까지 알아보았는데, 내장 함수를 통해서 간단하게 처리할 수 있지만, 지원되는 기능을 바로 사용하는 것보다는 직접 기능을 구현해 보고 비교하면서 차이점을 확인하고 학습하는 것이 기능을 더 오래 기억할 수 있고 숙지할 수 있는 방법이다.


다음에도 간단하지만 중요한 기능에 대해서 정리해 봐야겠다.

 

반응형