쉼표 또는 세미콜론이있는 CSV?


80

CSV 파일은 일반적으로 어떻게 작성됩니까? 쉼표 또는 세미콜론으로? 어떤 것을 사용할 지에 대한 조언이 있습니까?


5
쉼표로 구분 된 값 (Wikipedia)을 참조하세요 .
Jesper

4
CSV-> 쉼표로 구분 된 값
ChadNC

@ChadNC 내 코드에서 사용할 구분 기호를 선택할 때도 생각했습니다. 가장 쉬운 해결책은 ;특정 설정을 지시 할 필요없이 Ubuntu와 Windows에서 자동으로 인식 되는를 사용 하는 것입니다.
gsamaras

답변:


77

Windows에서는 목록 구분 기호가있는 "지역 및 언어 옵션"사용자 지정 화면에 따라 다릅니다. 이것은 Windows 응용 프로그램이 CSV 구분 기호로 예상되는 문자입니다.

물론 이것은 Windows 응용 프로그램에서만 효과가 있습니다. 예를 들어 파일이 위에서 언급 한 구분 기호를 사용하지 않는 경우 Excel은 데이터를 열로 자동 분할하지 않습니다. Windows 지역 설정을 사용하는 모든 응용 프로그램에는이 동작이 있습니다.

다른 응용 프로그램에서 CSV를 가져와야하는 Windows 용 프로그램을 작성하고 있고 대상 컴퓨터에 대한 목록 구분 기호 집합이라는 것을 알고 있다면 ,그것을 선택하십시오. 그렇지 않으면 ;소수점, 숫자 그룹화에 문제가 적기 때문에 선호합니다. 그리고 많은 텍스트에 나타나지 않습니다.


35
이 변경 사항은 Excel에서 CSV 파일 열기에도 영향을줍니다. Windows CSV 파일과 더 잘 호환되도록 sep=;하려면 CSV 파일 위에 추가 하십시오.
papo dec

11
> "나는 선호한다; 소수점 문제가 적기 때문에". 이것은 잘못된 해결책입니다. 구분 기호가 쉼표이고 셀의 값에도 쉼표가 포함 된 경우 값을 큰 따옴표로 묶어야합니다. 예 : 111,222, "33,5", 444, "55,98", 666
Elmue

1
Mac Numbers 앱에서도 마찬가지입니다. Photoshop에서 인식 한 CSV를 만들 수 없어서 머리카락을 뽑았습니다. 지역 옵션을 다시 미국 영어로 변경했는데 모두 잘 작동했습니다
Tibidabo

21
그 지역적인 것은 그것이 만들어 질 수있는 가장 어리석은 일입니다. 지역에 걸쳐 다를 수 CSV 파일 형식을 수있는 방법이 제 동료는 다른 지역에서 열거 나 PC와 사람에 대한 CSV 저장 할 수 없음을 의미 .. oucch
미구엘

넌 프로그래밍을하는 경우 CC++: Windows에서 당신은 시스템 전체 또는 사용자 구분 검색하기 위해 다음과 같은 API를 사용할 수 있습니다GetLocaleInfo(lcid, LOCALE_SLIST, buff, _countof(buff));
ahmd0

52

널리 인식되고 이해되는 쉼표를 고수하십시오. 당신의 가치를 인용하고 당신의 인용문을 피하십시오.

ID,NAME,AGE
"23434","Norris, Chuck","24"
"34343","Bond, James ""master""","57"

5
아주 짧은 예제로 많은 csv 시나리오를 다루기위한 +1
Niels Brinch 2012 년

1
쉼표로 구분하는 것은 좋지만 쉼표가있는 필드를 가져 오면 문제가 발생합니다. 다음은 내가 매뉴얼
Ibu

4
잘못된! 내 컴퓨터에서 쉼표를 구분 기호로 사용하여 CSV 파일을 작성하고 Excel에서 열면 전체 줄이 하나의 열만 차지하게됩니다! Windows 지역 설정이어야합니다!
sergiol

2
@sergiol 나는 그것이 그들이 말한 것을 어떻게 무효화하는지 잘 모르겠습니다.
AMC

51

CSV는 RFC 4180 (2005 년)에 요약 된 표준 형식이므로 표준이 부족하지 않습니다. https://www.ietf.org/rfc/rfc4180.txt

그 전에도 CSV의 C는 항상 세미콜론이 아니라 쉼표를 나타냅니다.

마이크로 소프트가이를 계속 무시하고 수십 년 전으로 바꾼 괴수를 고수하고있는 것은 유감입니다.

  • 인용 된 텍스트 내에 줄 바꿈이 발생하지 않는 한 줄당 하나의 레코드입니다 (아래 참조).
  • 열 구분 기호로서의 쉼표. 세미콜론이 아닙니다.
  • 숫자의 소수점으로 PERIOD. 쉼표가 아닙니다.
  • "큰 따옴표"로 묶인 쉼표, 마침표 및 / 또는 줄 바꿈이 포함 된 텍스트입니다.
  • 텍스트가 큰 따옴표로 묶여있는 경우 에만 텍스트에서 이러한 따옴표는 두 배로 이스케이프됩니다. 이 예는 동일한 세 필드를 나타냅니다.

    1, "이 텍스트에는" "따옴표" ""가 포함되어 있습니다. ", 3

    1,이 텍스트에는 "따옴표"가 포함되어 있습니다.

이 표준은 날짜 및 시간 값을 다루지 않습니다. 개인적으로 일 / 월 / 년-월 / 일 / 년 혼동을 피하기 위해 ISO 8601 형식을 고수하려고합니다.


16
세미콜론이 처음에 선택 되었다면 괴물 성은 나타나지 않았을 것입니다. 쉼표는 소수 또는 천 단위 구분 기호로만 사용되는 것이 아니라 세미콜론과 달리 텍스트에서도 자주 사용됩니다. 훨씬 더 희귀 ... 때문에 세미콜론 더 나은 선택이었을 것이다
AFract

14
내가 괴물이라고 말했을 때 나는 마이크로 소프트가 언어에 의존하도록 만들었다는 것을 의미했습니다. Excel은 CSV 파일을 열고이를 스프레드 시트로 처리하고 스프레드 시트를 CSV 형식으로 저장할 수 있지만 미국에서 Excel로 저장 한 CSV 파일 (예 : 프랑스 또는 벨기에의 누군가가 파일을 열려고하면 그 반대의 경우도 마찬가지)이 작동하지 않습니다. 모든 사람에게 적합한 표준이있는 한 어떤 표준이든 괜찮습니다.
Luc VdV

4
"CSV는 RFC 4180 (2005 년)에 요약 된 표준 형식이므로 표준이 부족하지 않습니다." 불행히도 RFC 4180은 표준이 아닌 의견 요청입니다. 맨 위에는 "어떤 종류의 인터넷 표준도 지정하지 않습니다"라고 적혀 있습니다. 나중에 RFC 4180은 "대부분의 구현에서 따르는 것처럼 보이는 형식을 문서화합니다." 라고 말합니다 . 이것은 표준 기관과 관련이없는 소규모 민간 회사에서 만든 것으로 보입니다. 이것은 훌륭한 시작점이지만 불행히도이 "표준"을 따르지 않는 CSV 파일이 많이 있습니다.
Jim Rea

9
모든 인터넷 표준을 RFC라고합니다.
Luc VdV

2
그러나 그들이 표준 일 때, 그들은 그것이 규범 적이 지 않다고 말하지 않습니다. 대신 RFC 4180의 경우가 아닌 여러 규범 섹션이 있습니다.
Frédéric

42

또한 관련이 있지만 특히 뛰어나려면 이 답변 과 제안하는 다른 답변을 살펴보십시오 . CSV 시작 부분에 다음 줄을 삽입하십시오.

"sep=,"

예상되는 구분 기호를 Excel에 알리려면


3
Excel에서는 작동하지만 Microsoft Power BI에서는 인식되지 않습니다.
Tomas Kubes

9

1.> 파일 형식을 .CSV (세미콜론으로 구분)로 변경

원하는 결과를 얻으려면 옵션 에서 delimiter설정 을 임시로 변경해야합니다 Excel.

Move to File -> Options -> Advanced -> Editing Section

"시스템 구분 기호 사용"설정을 선택 취소하고 "십진수 구분 기호"필드에 쉼표를 입력합니다.

이제 파일을 .CSV형식으로 저장하면 세미콜론으로 구분 된 형식으로 저장됩니다.


6

처음에는 쉼표가되었지만 쉼표가 소수점으로 자주 사용되기 때문에 좋은 구분 기호가 아니므로 세미콜론과 같은 다른 항목은 대부분 국가에 따라 다릅니다.

http://en.wikipedia.org/wiki/Comma-separated_values#Lack_of_a_standard


Wikipedia 기사의 해당 섹션이 사라졌습니다. en.wikipedia.org/wiki/Comma-separated_values#Basic_rules 에 다시 링크 할 수 있습니다 . 여기에는 로케일에 대한 구절이 있습니다.> " 인접 필드는 단일 쉼표로 구분해야합니다. 그러나"CSV "형식은 다음과 같이 크게 다릅니다. 이 구분 문자 선택. 특히 쉼표가 소수점 구분 기호로 사용되는 로케일에서는 세미콜론, TAB 또는 기타 문자가 대신 사용됩니다. "
Jules Kerssemakers

4

CSV는 쉼표로 구분 된 파일입니다. 일반적으로 구분 기호는 쉼표이지만 구분 기호로 사용되는 다른 많은 문자를 보았습니다. 그들은 자주 사용되지 않습니다.

무엇을 사용해야하는지에 대한 조언에 관해서는 귀하의 애플리케이션을 알아야합니다. 파일이 응용 프로그램 / 프로그램에 고유합니까 아니면 다른 프로그램과 함께 작동해야합니까?


6
나는 유럽에서; 널리 퍼져 있습니다. 대부분 60,00 €와 같은 숫자에 쉼표가 있기 때문입니다.
oers

5
@oers 당신 "quote"의 가치 만큼 중요하지 않습니다 .
adarshr

글쎄, 나는 주로 시드 파일 네트워킹에 사용되는 다른 구분 기호를 보았지만 유럽 돈도 작동합니다!
Youssef G.

4

CSV의 기본 Excel 구분 기호로 쉼표를 세미콜론으로 변경하려면 지역-> 추가 설정-> 숫자 탭-> 목록 구분 기호로 이동하여 입력하십시오. 기본값 대신


1
지역 설정이 ,소수점 구분 기호로 설정되어 있고 ,Excel에서 열 때 구분 된 열이있는 파일을 내 보내면 텍스트가 하나의 열에 만 나타납니다. > 텍스트 컬럼에 - -> 선택 엑셀 2013 년 DATA로 이동, 첫 번째 열을 선택 Delimited, 클릭 Next만 선택 CommaDelimiters당신은에 변경 사항을 즉시 볼 수 있습니다 Data preview그리고 마지막으로 클릭Finish
sergiol

2

세미콜론에 대해 약간의 이야기를 나누는 것이 좋습니다. 많은 국가에서 쉼표는 마침표가 아닌 소수점으로 사용됩니다. 대부분 세계의 절반으로 구성된 EU 식민지, 나머지 절반은 영국 표준 (대체 영국이 그렇게 큰 O_O)을 따르므로 숫자가 포함 된 데이터베이스에 쉼표를 사용하면 Excel에서 구분자로 인식하지 않기 때문에 골칫거리가됩니다. .

우리나라 베트남에서도 마찬가지로 프랑스 표준을 따르고, 파트너 홍콩은 영국 표준을 사용하므로 쉼표를 사용하면 CSV를 사용할 수 없게됩니다. \ t 또는; 대신 국제적으로 사용되지만 CSV 문서에 따라 여전히 "표준"이 아닙니다.


-3

가장 좋은 방법은 csv 확장자가있는 텍스트 파일에 저장하는 것입니다.

Sub ExportToCSV()
Dim i, j As Integer
Dim Name  As String

Dim pathfile As String

Dim fs As Object
    Dim stream As Object

    Set fs = CreateObject("Scripting.FileSystemObject")
On Error GoTo fileexists

i = 15
Name = Format(Now(), "ddmmyyHHmmss")
pathfile = "D:\1\" & Name & ".csv"

Set stream = fs.CreateTextFile(pathfile, False, True)

파일이 존재:

If Err.Number = 58 Then
    MsgBox "File already Exists"
    'Your code here
    Return
End If
On Error GoTo 0

j = 1
Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)

    stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))

    j = j + 1
    i = i + 1
Loop


stream.Close

End Sub
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.