CSV 도우미English

CSV 주문번호가 1.23E+15로 보일 때, 표시만 바뀐 걸까요?

긴 주문번호가 Excel에서 지수 표기로 보이면 표시 방식이 달라진 경우와 실제 뒷자리가 바뀐 경우를 구분해야 합니다. 열 너비나 표시 형식을 바꾸는 것만으로 이미 잃은 자릿수가 복구되지는 않습니다. 먼저 원본 CSV를 보존하고 문자열 상태의 주문번호와 대조하세요.

원인: 숫자 계산과 식별자는 보존 조건이 다릅니다

Microsoft는 Excel 숫자의 정밀도를 유효숫자 15자리로 설명하며, 16자리 이상 번호를 보존하려면 텍스트 형식을 쓰도록 안내합니다. 긴 번호가 숫자로 변환돼 뒷자리가 바뀌면 서로 다른 주문번호가 같아질 위험이 있습니다. 반면 지수 표시만으로 손실이 발생했다고 확정할 수는 없습니다. 표시 형식은 화면에 보이는 방식이고 원래 값과 구분해야 합니다. Microsoft 긴 숫자 보존 안내, 표시 형식 안내

CSV의 큰따옴표는 쉼표·줄바꿈 등을 포함한 필드를 표현하는 문법입니다. CSV 필드를 큰따옴표로 감쌌다는 사실만으로 Excel의 텍스트 셀 형식까지 지정되는 것은 아닙니다. 이 글에서는 먼저 Python 표준 CSV 읽기로 원문을 확인합니다. 일반적인 csv.reader는 기본 설정에서 필드를 문자열로 반환합니다. Python 공식 문서

재현: 마지막 한 자리만 다른 합성 번호

합성 주문번호 CSV는 실제 고객의 주문·계정·카드 번호가 아닙니다.

순번CSV 원문 order_id길이확인할 점
1123456789012345616순번2와 마지막 자리만 다름
2123456789012345716두 번호를 숫자로 바꿔 비교하지 않음
312345678901234515길이 비교용이며 자동 변환 안전성을 보장하는 표식은 아님
4000123456789012316앞자리0도 보존해야 하는 식별자

다음 코드는 예제 CSV와 같은 폴더에서 실행합니다. 원본에 덮어쓰거나 번호를 숫자로 변환하지 않습니다.

import csv

with open('guide-13-long-order-numbers.csv', encoding='utf-8-sig', newline='') as f:
    rows = list(csv.DictReader(f, strict=True))

ids = [row['order_id'] for row in rows]
for index, value in enumerate(ids, 1):
    print(index, value, len(value))
print('서로 다른 원문 수:', len(set(ids)))
print('첫 두 번호가 같은가:', ids[0] == ids[1])

기대 결과는 길이 16, 16, 15, 16, 서로 다른 원문 수 4, 첫 두 번호 비교 False입니다. Excel의 숫자 변환을 Python 숫자 변환으로 흉내 낸 검증이 아닙니다. 이 코드는 합성 CSV 원문이 서로 다르고 문자열로 보존되는지만 확인합니다.

해결: 원본 보존 → 텍스트로 가져오기 → 원문 대조

1. 원본 CSV를 따로 보관합니다. Excel에서 열어 저장한 사본과 원본을 구분하세요. 사본을 원본 위에 저장하지 않습니다. 2. 해당 Excel 환경에서 지원하는 ‘데이터 → 텍스트/CSV에서’ 가져오기를 사용하고, 주문번호 열을 숫자 변환이 적용되기 전부터 텍스트로 다룹니다. Power Query에 자동으로 만들어진 ‘변경된 유형’ 단계가 있다면 그 단계가 긴 번호를 이미 숫자로 바꾸지 않았는지 확인하고, 원문이 유지되는 단계에서 텍스트 형식을 지정합니다. 메뉴와 기능 지원은 버전·OS에 따라 다릅니다. Microsoft 가져오기 안내 3. 불러온 값의 전체 자릿수와 끝자리, 앞자리0를 원문과 비교합니다. 이 예제에서는 첫 두 값이 서로 다른지 함께 확인하세요. CSV로 다시 내보냈다면 그 파일도 원문 문자열과 대조합니다. 4. 이미 손실된 사본만 남았다면 표시 형식·TEXT 함수·임의의0 채우기로 복원했다고 판단하지 마세요. 제공처의 원본을 다시 받거나 원본 백업을 확인해야 합니다.

Excel 일부 버전의 자동 데이터 변환 설정도 Microsoft가 안내하지만 모든 버전에 있다고 가정하지 않습니다. 작은따옴표를 CSV 값 앞에 일괄 추가하거나 ="번호" 형태의 수식으로 바꾸는 방법은 원문과 다른 데이터를 만들므로 이 글에서는 사용하지 않습니다.

CSV 도우미와의 연결

CSV 검사기에서 원문과 열 구조를 먼저 확인할 수 있습니다. 현재 검사 라이브러리는 16자리 이상 ASCII 숫자로만 된 필드를 긴 숫자 주의 대상으로 찾습니다. 이 합성 예제의 해당 필드는 세 개입니다. 경고는 Excel이 이미 값을 바꿨다는 증거나 셀 자료형 판정이 아니며, 원문을 고치거나 잃은 자리를 복원하지 않습니다.

이 경고만으로 모든 위험을 찾을 수는 없습니다. 공백·부호·소수점·지수 표기처럼 다른 형태는 이 숫자열 규칙과 다릅니다. 이미 짧아지거나 바뀐 CSV는 구조 검사를 통과해도 원래 주문번호와 다를 수 있습니다. 번호가 다른 채로 중복 제거를 실행하기 전에 원문부터 대조하세요.

한계와 검토 정보

합성 원문4건·문자열 길이·서로 다름·CSV 왕복 보존과 현재 로컬 검사 라이브러리의 경고3건을 확인했습니다. 실제 Excel 가져오기·표시 형식·Power Query·브라우저 UI·다운로드는 실행하지 않았습니다. Excel 화면이나 숫자 손실이 재현됐다고 주장하지 않습니다. 식별자를 산술 계산하는 기능이나 손실된 번호를 추측하는 복구 기능을 제공하지 않습니다.

검토일: 2026-10-19. 참고용 예제이며, 실제 업무 파일은 원본과 사본을 구분해 확인하세요.

AI 보조 작성: AI로 원고와 합성 자료를 작성하고 로컬 실행 결과를 대조했습니다. 실제 고객 자료를 사용하거나 사람의 Excel 검수를 받았다고 주장하지 않습니다.

이 글의 예제 파일을 CSV 검사기에 넣어 직접 확인해 보세요.

CSV 검사기 열기 ›