파이썬 CSV 저장: 한글 인코딩과 수식 입력 주의

CSV 저장에서는 열 순서·인코딩·줄바꿈을 정하고, 스프레드시트에서 수식으로 해석될 수 있는 외부 입력을 구분해야 합니다.

어떤 상황에서 적용하나요?

아래는 임시 폴더에 CSV를 쓰고 다시 읽어 헤더와 한글 보존을 확인합니다. 표준 라이브러리만 사용하며 실제 Excel을 실행하지 않습니다. utf-8-sig는 BOM이 포함된 UTF-8입니다.

검증 범위: 아래 코드는 외부 서비스에 요청하지 않는 로컬 예제입니다. 실제 서비스 연결은 별도로 검증해야 합니다.

최소 예제로 동작 확인하기

import csv
from pathlib import Path
from tempfile import TemporaryDirectory

def spreadsheet_text(value):
    text = str(value)
    return "'" + text if text.lstrip().startswith(("=", "+", "-", "@")) else text

with TemporaryDirectory() as folder:
    path = Path(folder) / "report.csv"
    with path.open("w", encoding="utf-8-sig", newline="") as file:
        writer = csv.DictWriter(file, fieldnames=["name", "note"])
        writer.writeheader()
        writer.writerow({"name": "보고서", "note": spreadsheet_text("=1+1")})
    with path.open(encoding="utf-8-sig", newline="") as file:
        rows = list(csv.DictReader(file))
    assert rows == [{"name": "보고서", "note": "'=1+1"}]
    print(rows)

결과는 어떻게 확인하나요?

한글과 앞에 작은따옴표를 붙인 문자열이 보존됩니다. 이 처리는 예제의 단순 정책이며 모든 스프레드시트와 가져오기 방식에 대한 완전한 방어가 아닙니다. 실제 사용 도구의 가져오기 결과를 별도로 시험하세요.

실제 업무에 적용할 때 확인할 점

CSV는 셀 형식·서식·여러 시트를 보존하는 Excel 통합문서가 아닙니다. 원본 숫자와 텍스트를 구분하고 외부 입력만 별도 내보내기 정책으로 처리하세요. 파일을 저장할 때 기존 파일 덮어쓰기와 개인정보 포함 여부도 확인합니다.

공식 자료와 다음 단계

관련 공식 문서에서 사용하는 버전의 기능과 제한을 확인하세요.

학습 경로: 데이터 처리 가이드 · 중복 저장 처리

작성: 로그 · 2026-10-17 수정: 확인되지 않은 경험담과 성능 보장 표현을 제거하고 예제·적용 조건·공식 근거를 보완했습니다.

댓글

이 블로그의 인기 게시물

API 키 저장 방법: 해싱과 암호화의 차이, Fernet 예제

파이썬 Google Sheets API 연동: 서비스 계정 권한과 읽기·쓰기

Pandas 결측치 처리: isna, fillna, dropna 선택 기준