2011-02-01 4 views
0

CSV 사양 (RFC 4180)에서 Spaces are considered part of a field and should not be ignored. 필드에 큰 따옴표가 있으면 분명히 따옴표 안에 공백을 두어야합니다.공백으로 시작하기 전 CSV 필드

제 질문은 큰 따옴표 밖에있는 공백은 무엇입니까? 이 일이 일어나는 것을 볼 수있는 유일한 방법은 CSV를 생성 한 도구가 제대로 수행하지 못하는 경우입니다.

예 : one, "two" ,three

이 전후 공간 "이"가 포함되어야 하는가?

답변

0

세포가 유효하지 않음 - 제대로 그것이 있어야 해당 행을 코드 :

one," ""two"" ",three 

따옴표는 이스케이프해야합니다 그들은 이스케이프 시퀀스로 사용되기 때문에 (이중 따옴표로). two 주위의 따옴표를 보존하지 않으려는 경우 기술적으로 두 행의 내용이 잘못되었습니다. - (1) 따옴표 앞뒤의 공백과 (2) 셀 주위에 따옴표가 있지만 아무것도 없어야합니다. 탈출했다. CSV는 셀 내용에 쉼표 나 따옴표가 있으면 셀 주위에 따옴표 만있을 수 있다고 요구합니다.

나는 귀하의 경우에, 나는 관용의 측면에서 잘못을 범할 것입니다.

+0

내 말은 '하나', 두 개, 세 개, '하나', '두 개' '' ''세 개 '입니다. 그래서 부적절하게 기록되었습니다. 필드가 필드에 따옴표없이 부적절하게 작성되었다고 가정해야합니까? 또는 따옴표가 따옴표로 묶인 필드의 일부이고 앞뒤에 간격이 있다고 가정해야합니까? –

+0

제 편집 내용을 이해합니다. 이것은 CSV 사양의 문제점입니다. CSV를 작성한 사람과 파싱을하는 사람간에 종종 문제가되는 변형이 많이 있습니다. (그렇다면 처음부터 파서를 만들어야한다는 또 다른 큰 문제가 있습니다.) – kelloti

+1

예, 내가 한 일입니다. 나는 그것을 오픈 소스 했으므로 다른 사람들이 그것을 사용할 수있다. https://github.com/JoshClose/CsvHelper 또한 NuGet을 통해 제공됩니다. –

0

견적과 쉼표 구분을 설명하기 까다로운 BULK INSERT 및 BCP 형식 파일을 사용하여이 문제를 처리했습니다. 차이가있을 수있는 경우에는 , " 구분 기호로 구분합니다. 가장 일반적인 구분 기호를 사용 했으므로 예제의 쉼표로 모든 큰 따옴표처럼 필요하지 않은 것을 제거했습니다.

그러나 소스 데이터가 쉼표로 구분 된 경우에만 해당 필드의 실제 내용이 될 수도 있습니다. 어느 쪽이든, 적절한 방법으로 필드를로드 할 때 따옴표를 버릴 것입니다.