2025년 3월 20일 목요일

csv 파일 처리

import random  # 랜덤 선택을 위한 모듈

class CsvProcessor:
    def __init__(self, file_name, dict_fields):
        self.file_name = file_name
        self.dict_fields = dict_fields.split(",")  # 필드명은 쉼표로 분리
        self.data_list = []

    def process_csv(self):
        try:
            with open(self.file_name, "r") as csv_file:
                for line in csv_file:
                    # 각 줄을 쉼표로 분리하여 열 데이터 추출
                    columns = line.strip().split(",")
                    # dict_fields를 기준으로 딕셔너리 생성
                    entry = {self.dict_fields[i]: columns[i] for i in range(len(self.dict_fields))}
                    # 숫자 변환 가능하면 정수로 변환
                    for key in entry:
                        if entry[key].isdigit():
                            entry[key] = int(entry[key])
                    self.data_list.append(entry)
        except Exception as e:
            print(f"Error while processing the file: {e}")

    def get_random_entry(self):
        # data_list에서 랜덤으로 하나의 딕셔너리를 반환
        if not self.data_list:
            print("Data list is empty. Please process the CSV file first.")
            return None
        return random.choice(self.data_list)

# 사용 예시
file_name = "./resources/data.csv"  # CSV 파일 경로
dict_fields = "no,display,amount"   # dict 항목명

processor = CsvProcessor(file_name, dict_fields)
processor.process_csv()

# 랜덤 딕셔너리 가져오기
random_entry = processor.get_random_entry()
print(random_entry)

댓글 없음: