데이터 응급실 안내한 열로 열릴 때

CSV 문제 해결 가이드

CSV 열이 한 칸에 나올 때: 쉼표·세미콜론·탭 구분자 진단

Excel이나 pandas에서 CSV가 한 열로만 열릴 때 구분자 불일치, 따옴표 구조, 인코딩 문제를 구분하고 원본을 훼손하지 않고 다시 가져오는 순서를 설명합니다.

최초 작성 2026년 8월 29일마지막 검토 2026년 8월 29일원본 보존 우선
CSV구분자Excelpandas

CSV를 열었는데 이름,부서,전화번호가 각각의 열이 아니라 A열 한 칸에 통째로 들어간다면, 파일이 망가졌다고 단정할 단계는 아닙니다. 파일에서 필드를 나눈 문자와 가져오는 프로그램이 기대한 문자가 다를 때 가장 흔히 나타나는 증상입니다.

예를 들어 아래 파일은 쉼표가 아니라 세미콜론으로 필드를 나눕니다.

이름;부서;전화번호
김민지;영업;010-0123-4567

이 파일을 쉼표 구분 CSV로 읽으면 각 줄에는 쉼표가 없으므로 한 줄 전체가 한 필드가 됩니다. 반대로 실제 쉼표 구분 파일을 세미콜론으로 읽어도 같은 현상이 생깁니다.

먼저 원본과 증상을 분리하세요

원본 파일을 복사한 뒤 복사본으로 확인합니다. Excel에서 다시 저장하거나 구분자를 일괄 치환하기 전에 다음 세 가지를 구분해야 합니다.

관찰한 증상 가능성이 큰 원인 먼저 할 확인
모든 행이 한 열에 들어감 선택한 구분자가 파일과 다름 쉼표·세미콜론·탭이 따옴표 밖에서 반복되는지 확인
한글도 함께 깨짐 문자 인코딩과 구분자 설정이 모두 다를 수 있음 인코딩을 먼저 확정한 뒤 구분자 확인
일부 행만 열이 늘어남 값 안의 구분자 또는 따옴표가 잘못 처리됨 오류 행의 따옴표 시작·종료와 열 수 확인
모든 행이 실제로 한 값뿐임 한 필드짜리 데이터일 수 있음 원본에 구분 문자가 존재하는지 확인

파일 확장자가 .csv라는 사실만으로 실제 구분 문자가 쉼표라고 보장되지는 않습니다. Microsoft도 CSV에서는 쉼표가 일반적이지만 가져오기와 내보내기에 사용하는 구분자를 바꿀 수 있고, Windows의 목록 구분자 설정도 저장 결과에 영향을 준다고 설명합니다. 따라서 확장자가 아니라 원문에 반복되는 구조를 확인해야 합니다.

구분자는 따옴표 밖에서 세세요

쉼표가 가장 많이 보인다는 이유만으로 쉼표 파일이라고 결정하면 안 됩니다. 쉼표가 데이터 자체에 들어갈 수도 있기 때문입니다.

이름,지역,메모
김민지,서울,"종로구, 중구 담당"

이 예제에서 두 번째 데이터 행에는 쉼표가 세 번 보이지만 필드는 세 개입니다. "종로구, 중구 담당" 안의 쉼표는 필드 구분자가 아니라 값의 일부입니다.

RFC 4180은 널리 쓰이는 CSV 형식을 다음처럼 정리합니다.

  • 필드는 쉼표로 나눕니다.
  • 쉼표나 줄바꿈이 들어간 필드는 큰따옴표로 감쌉니다.
  • 따옴표 안의 실제 큰따옴표는 ""처럼 두 번 씁니다.
  • 각 레코드는 같은 수의 필드를 갖는 것이 바람직합니다.

다만 RFC 4180은 정보 제공 목적의 공통 형식 문서이며, 실제 프로그램에는 세미콜론·탭·파이프 같은 변형이 많습니다. CSV 파일 진단 도구가 여러 후보를 비교하는 이유도 여기에 있습니다.

안전한 진단 순서

1. 한글이 정상인지 먼저 확인합니다

문자가 깨진 상태에서는 구분자처럼 보이는 문자를 잘못 판단할 수 있습니다. UTF-8과 CP949 계열 중 어느 해석이 맞는지 먼저 확인하고, 둘 다 유효하지만 결과가 다르면 미리보기를 대조합니다. 자세한 순서는 CSV 한글 깨짐 가이드를 참고하세요.

2. 텍스트로 첫 몇 줄을 봅니다

스프레드시트가 아니라 원문을 볼 수 있는 편집기에서 첫 행과 대표 데이터 행을 확인합니다. 다음 후보가 여러 행에서 비슷한 횟수로, 그리고 따옴표 밖에서 반복되는지 봅니다.

후보 화면에서 보이는 예 흔한 출처
쉼표 이름,부서,지역 일반적인 CSV
세미콜론 이름;부서;지역 소수점 쉼표를 쓰는 지역 설정, 일부 업무 시스템
이름    부서    지역 TSV, 텍스트 내보내기
파이프 `이름 부서

탭은 공백처럼 보일 수 있으므로 편집기의 공백 문자 표시 기능이 도움이 됩니다. 그렇다고 모든 공백을 탭으로 바꾸거나, 쉼표를 전부 세미콜론으로 치환해서는 안 됩니다. 따옴표 안의 정상 값까지 바뀔 수 있습니다.

3. 헤더와 여러 데이터 행의 열 수를 비교합니다

첫 행만 보고 결정하지 않습니다. 헤더, 평범한 행, 쉼표가 들어간 메모 행, 여러 줄 메모 행을 함께 봅니다. 올바른 구분자를 선택했는데 특정 행만 열 수가 다르다면 그 행의 따옴표가 닫히지 않았거나 값 안의 구분자가 인용되지 않았을 수 있습니다.

4. 가져오기 미리보기에서 결과를 확인합니다

총 행 수와 첫 행만 확인하지 말고 다음도 함께 확인합니다.

  • 헤더와 데이터의 열 수가 같은지
  • 빈 필드가 앞뒤 열을 밀지 않는지
  • "서울, 경기" 같은 값이 한 셀에 남는지
  • 여러 줄 메모가 하나의 레코드로 유지되는지
  • 전화번호와 코드의 앞자리 0이 보존되는지

Excel에서 다시 가져오는 방법

CSV를 더블클릭하면 Excel은 현재 기본 데이터 형식 설정으로 각 열을 해석합니다. 설정을 직접 확인하려면 데이터 → 텍스트/CSV에서 파일을 선택하고 미리보기에서 파일 원본과 구분자를 확인한 뒤 불러옵니다.

Microsoft의 텍스트·CSV 가져오기 안내는 이 화면에서 구분자를 선택하면 미리보기로 결과를 바로 확인할 수 있다고 설명합니다. 가져오기 마법사를 쓰는 환경이라면 텍스트 가져오기 마법사 안내에서 구분자와 텍스트 한정자(")를 각각 지정할 수 있습니다.

Windows의 목록 구분자를 바꾸는 방법도 있지만 시스템 전체 프로그램에 영향을 줄 수 있습니다. 파일 한 개를 열기 위해 전역 설정부터 바꾸기보다, Excel 가져오기 화면에서 해당 파일의 구분자를 명시하는 편이 범위가 작고 되돌리기 쉽습니다.

pandas에서는 sep를 명시하세요

인코딩과 구분자를 확인했다면 코드에도 같은 값을 적습니다.

import pandas as pd

df = pd.read_csv(
    "orders.csv",
    encoding="utf-8-sig",
    encoding_errors="strict",
    sep=";",
    quotechar='"',
    dtype=str,
    keep_default_na=False,
    on_bad_lines="error",
)

탭 구분 파일이라면 sep="\t", 쉼표 구분 파일이라면 sep=","를 사용합니다. pandas read_csv 공식 문서sep=None일 때 Python 엔진의 스니퍼가 첫 번째 유효 행만 보고 구분자를 자동 감지한다고 설명합니다. 빠른 탐색에는 쓸 수 있지만, 업무 파일의 확정 설정으로는 여러 행을 확인한 뒤 구분자를 명시하는 편이 안전합니다.

on_bad_lines="skip"으로 오류가 사라지는 것은 파일이 고쳐진 것이 아닙니다. 해당 옵션은 필드가 너무 많은 문제 행을 건너뛸 수 있으므로, 누락이 허용되지 않는 데이터에서는 먼저 "error"로 실패 위치를 찾고 원인을 확인해야 합니다. pandas의 인코딩·파싱 예외를 함께 보고 있다면 pandas CSV 오류 가이드로 이어서 확인하세요.

CSV 파일 진단 도구로 확인할 수 있는 범위

CSV 파일 진단 도구는 원본 파일을 바꾸지 않고 다음을 함께 표시합니다.

  • 쉼표·탭·세미콜론·파이프 구분자 후보
  • 후보별 열 수의 일관성
  • 첫 행과 열 수가 다른 표 기준 행과 원본 텍스트 줄 위치
  • 닫히지 않은 큰따옴표
  • UTF-8과 CP949 계열 인코딩 후보

후보가 하나로 좁혀지지 않으면 도구도 의도한 구분자를 자동 확정하지 않습니다. CSV 파일 진단 도구는 최대 5MiB의 UTF-8·CP949 계열 파일을 진단하며, UTF-16/32 본문 분석과 구분자 변환 파일 생성은 지원하지 않습니다. 올바른 구분자는 파일을 만든 시스템의 내보내기 설정이나 데이터 사전과 대조해 최종 결정해야 합니다.

마지막 확인표

  1. 원본을 보존했는가?
  2. 한글이 올바른 인코딩으로 보이는가?
  3. 선택한 구분자가 여러 행에서 일관된 열 수를 만드는가?
  4. 따옴표 안의 쉼표와 줄바꿈을 값으로 처리했는가?
  5. 열 수가 다른 행을 건너뛰지 않고 확인했는가?
  6. 가져온 행 수·열 수와 대표 식별자 값을 원본과 대조했는가?

한 열로 열린다는 증상은 출발점일 뿐입니다. 구분자만 바꿔 화면이 나뉘었다고 끝내지 말고, 따옴표 구조와 전체 레코드 수까지 확인해야 데이터 누락을 피할 수 있습니다.