본문 바로가기

파이썬/파이썬 예제

CSV 파일에서 값을 합산, 가장 큰 금액과 가장 작은 금액 출력하기

728x90
반응형

sales_result.csv
0.00MB

import csv
import re


def s2i(s: str) -> int:
    try:
        return int(re.sub(',', '', s))
    except:
        return 0


def print_label() -> None:
    print('{0}\t{1:>9}{2:>9}{3:>9}{4:>9}'.format('순번', '총합계', '12월매출', '11월매출', '10월매출'))


def print_data(l: list, sum: int) -> None:
    print('{0}\t{1:>10,}{2:>10,}{3:>10,}{4:>10,}'.format(l[1], sum, s2i(l[4]), s2i(l[3]), s2i(l[2])))


def get_sum(l: list) -> int:
    return s2i(l[2]) + s2i(l[3]) + s2i(l[4])


def print_summary(area: list, total: list) -> None:
    value = max(total)
    label = area[total.index(value)]
    print("{0}번에서 {1:,}원으로 매출이 가장 많이 발생했으며,".format(label, value))

    value = min(total)
    label = area[total.index(value)]
    print("{0}번에서 {1:,}원으로 매출이 가장 적게 발생했습니다.".format(label, value))


def print_result_data() -> None:
    area = []
    total = []
    with open("./sales_result.csv", "r") as csv_file:
        lines = csv.reader(csv_file)
        for line in lines:
            if line[0] != '순서':
                print_label()
            else:
                sum = get_sum(line)
                print_data(line, sum)

                area.append(line[1])
                total.append(sum)

    print_summary(area, total)


if __name__ == "__main__":
    print_result_data()

- 파이썬은 배우기는 쉬우나... 익숙하지가 않다.
- 다음에는 파이썬을 활용하여 시스템을 엔지니어링 하는 방법에 대해서 알아보자.

728x90
반응형