CSV 툴킷
포맷papaparse 기반으로 CSV/TSV를 파싱·정렬·미리보기. 구분자와 인용부호를 사용자 정의하고, CSV와 JSON 양방향 변환, 열 기준 정렬과 중복 제거를 지원합니다.
원격 URL은 가져오지 않습니다. JSON을 직접 붙여넣으세요.
유럽에서는 ; 를 CSV 구분자로 자주 사용합니다.
이 페이지에서
CSV 툴킷이란?#
CSV는 표 형식 데이터의 최대 공약수 포맷입니다. 모든 스프레드시트, 모든 데이터베이스 가져오기 마법사, 모든 분석 도구가 읽을 수 있지만, 디테일에 동의하는 것은 거의 없습니다. 구분자는 쉼표인가 세미콜론인가? 첫 행이 헤더인가? 값은 " 로 인용되는가 ' 로 인용되는가? 한 도구에서 완벽하게 열리는 파일이 기본값이 달라서 다른 도구에서는 깨져 도착할 수 있습니다. CSV 툴킷은 그 선택을 명시적으로 만들고, 파일이 필요한 일을 하도록 다시 빚기 위해 존재합니다.
이 페이지는 모두 papaparse 로 구동되는 네 가지 일을 합니다. 정렬 은 파일을 파싱하여 각 셀을 컬럼의 폭으로 채우고, 코드 리뷰나 README, 버그 보고에 바로 붙여넣을 수 있는 모노스페이스, 컬럼 정렬 그리드를 만듭니다. 어긋난 행이 즉시 튀어나오는 레이아웃입니다. 미리보기 는 파싱하여 페이지 자체에 표를 그려, 무언가를 하기 전에 데이터를 눈으로 검사하게 합니다. CSV → JSON 은 행을 JSON 배열로 바꿉니다(헤더가 있으면 객체로, 없으면 배열로). JSON → CSV 는 반대로 JSON 배열을 받아 CSV을 내보냅니다. 그 위에, 어떤 컬럼으로든 정렬하고, 전체 행의 중복을 제거하고, 구분자(쉼표, 세미콜론, 탭 또는 사용자 지정 한 글자)를 바꾸고, 인용부호를 고를 수 있습니다. 파일이 파이프라인의 다음 도구에서 살아남는지를 결정하는 바로 그 조절기들입니다.
사용 방법#
- 왼쪽의 입력 패널에 CSV(또는 JSON → CSV 모드에서 JSON)을 붙여넣으세요. 자리 표시자가 기대되는 모양을 보여 주며, 예제 가 작은 데이터셋을 불러옵니다.
- 모드 버튼을 고르세요. 정렬, 미리보기, 또는 JSON. JSON이 선택되면 방향을 위한 두 번째 버튼 그룹이 나타납니다. CSV → JSON 또는 JSON → CSV.
- 도구 모음에서 구조적 옵션을 설정하세요.
- 구분자 — 쉼표, 세미콜론, 탭 또는 사용자 지정(사용자 지정 값에는 한 글자 필드가 나타나며 기본값은
|). - 인용부호 — 이중(
") 또는 단일('). - 첫 행을 헤더로 — 1행이 컬럼 이름을 가질 때 체크, 헤더 없는 데이터면 해제. 헤더 모드는 파싱과 JSON 출력 모양을 모두 지배합니다.
- 구분자 — 쉼표, 세미콜론, 탭 또는 사용자 지정(사용자 지정 값에는 한 글자 필드가 나타나며 기본값은
- 원한다면 데이터를 정돈하세요. 정렬 기준 컬럼(헤더에서 채워지거나, 헤더 없는 입력에서는 숫자 인덱스)을 고르고, 오름차순 또는 내림차순 순서 를 고르며, 중복 제거 에 체크하여 전체 중복 행을 빼세요.
- 출력 패널(또는 미리보기 모드의 미리보기 그리드)에서 결과를 읽으세요. 헤더는 출력 크기와 행 수를 보여 주며, 복사 로 가져갑니다. 지우기 는 양쪽 패널을 초기화합니다.
행의 필드 수가 틀리거나 입력이 잘못되면 상태 표시줄이 행 번호를 보고하여, 추측하는 대신 원본을 고칠 수 있게 합니다.
주요 기능#
- 컬럼 정렬 출력. 정렬 모드는 모든 셀을 컬럼의 가장 긴 값 폭으로 채우므로, 쉼표의 벽처럼 보이던 CSV이 갑자기 줄을 맞춥니다. 필드가 하나 빠진 행을 찾아내는 데 더없이 귀중합니다.
- JSON 양방향. CSV → JSON은 객체의 배열(헤더 있음) 또는 배열의 배열(헤더 없음)을 만듭니다. JSON → CSV는 어느 쪽 모양이든 다시 받습니다.
- 구분자 인식. 쉼표, 세미콜론(쉼표가 소수점 구분자인 유럽 로케일에서 흔함), 탭(TSV), 또는 사용자 지정 글자 사이를 전환합니다. 도구 모음 아래 힌트가 왜 세미콜론이 존재하는지 상기시켜 줍니다.
- 정렬과 중복 제거. 두 값 모두 숫자로 보이면 숫자로, 그렇지 않으면 사전순으로 정렬합니다. 중복 제거는 정확한 전체 행 반복을 빼며(헤더 행은 항상 유지).
- 안전한 미리보기. 미리보기 그리드는 안전한 DOM API로 만들어집니다. 오직
textContent만, 결코 여러분 데이터의innerHTML은 쓰지 않으므로,<script>태그 투성이의 CSV라도 inert한 텍스트로 렌더링됩니다. - 엄격하게 클라이언트 사이드, 1 MB를 넘는 입력은 Web Worker로 처리됩니다.
실전 예시#
중복 행과 헤더를 곁들여 붙여넣은 작은 명단입니다.
입력:
name,role,city
Ada,Engineer,London
Lin,Designer,Taipei
Ada,Engineer,London
Sam,Manager,Berlin
세 번째 행이 Ada를 정확히 반복합니다. 정렬 을 쉼표 구분자, 헤더 켬으로 누르고, 중복 제거 에 체크하세요.
name role city
Ada Engineer London
Lin Designer Taipei
Sam Manager Berlin
각 컬럼이 가장 넓은 값으로 채워져 세 행이 줄을 맞추고, 중복된 Ada는 사라졌습니다. 상태 표시줄이 한 행 제거되었다고 보고합니다. 이제 같은 옵션으로 모드를 JSON (CSV → JSON)으로 바꾸면:
[
{ "name": "Ada", "role": "Engineer", "city": "London" },
{ "name": "Lin", "role": "Designer", "city": "Taipei" },
{ "name": "Sam", "role": "Manager", "city": "Berlin" }
]
헤더 행이 객체 키가 되었고, 남은 각 데이터 행이 하나의 객체가 되었습니다. role 로 정렬하면 행이 사전순으로 재정렬되고, 숫자 컬럼으로 정렬하면 값순으로 정렬됩니다.
FAQ#
쉼표 대신 세미콜론은 언제 써야 하나요?#
데이터 값의 일부로 쉼표가 들어 있고, 쉼표가 소수점 구분자인 로케일(유럽과 라틴 아메리카의 상당 부분)에 있을 때입니다. 거기서 3,14 는 두 필드가 아니라 하나의 숫자입니다. 그 로케일의 엑셀은 기본적으로 CSV를 세미콜론으로 내보냅니다. 파일이 열렸을 때 모든 것이 A열에 몰려있다면, 거의 확실히 구분자가 틀린 것입니다. 세미콜론으로 바꾸고 다시 정렬하세요.
중복 제거는 실제로 무엇을 비교하나요?#
헤더를 분리해 낸 뒤 전체 행의 정확한 동일성을 비교합니다. 두 행은 모든 필드가 셀 단위로 일치할 때만 중복입니다. 헤더 행은 결코 중복으로 간주되지 않으며 항상 유지됩니다. 부분 일치(같은 이름, 다른 도시)는 중복으로 세지 않습니다.
CSV → JSON은 객체와 배열을 어떻게 결정하나요?#
첫 행을 헤더로 가 체크되어 있으면, 각 데이터 행은 키가 헤더 이름인 객체가 됩니다. 체크되어 있지 않으면 각 행은 문자열의 배열이 되며, Col 1, Col 2 같은 라벨은 미리보기에만 붙습니다. JSON 출력은 평범한 배열의 배열입니다. 1행이 정말로 컬럼 이름일 때 헤더 옵션을 켜고, 날것의 숫자 그리드에는 끄세요.
제 데이터는 어디로 업로드되나요?#
어디로도 업로드되지 않습니다. 파싱과 언파싱 모두 페이지에 꾸려 넣어진 papaparse 를 통해 브라우저에서 실행됩니다. 1 MB를 넘는 파일은 Web Worker에서 처리되어 UI가 응답성을 유지하지만, 데이터는 결코 기기를 떠나지 않습니다.