이름과 숫자가있는 두 개의 열 CSV가 있습니다. 예를 들어 일부 사람들의 이름은 쉼표를 사용합니다. Joe Blow, CFA.
이 쉼표는 새 열로 해석되므로 CSV 형식을 구분합니다.
읽었으며 가장 일반적인 처방전은 해당 문자를 바꾸거나 구분 기호를 새로운 값으로 바꾸는 것 같습니다 (예 🙂 this|that|the, other
.
쉼표 구분 기호를 유지하고 싶습니다 (excel은 다른 구분 기호를 지원하지만 다른 인터프리터는 지원하지 않을 수 있음을 알고 있습니다). 나는 또한 Joe Blow| CFA
어리석은 것처럼 쉼표를 이름으로 유지하고 싶습니다 .
이스케이프 처리 등의 형식을 손상시키지 않고 CSV 열에 쉼표를 포함시키는 방법이 있습니까?
답변
필드를 따옴표로 묶습니다 (예 :
field1_value,field2_value,"field 3,value",field4, etc...
Wikipedia를 참조하십시오 .
업데이트 :
따옴표를 인코딩하려면을 사용하십시오 "
. 필드에 하나의 큰 따옴표가로 인코딩되고 ""
전체 필드가됩니다 """"
. 예를 들어 Excel에서 다음을 보면 :
---------------------------------------
| regular_value |,,,"| ,"", |""" |"|
---------------------------------------
CSV 파일에는 다음이 포함됩니다.
regular_value,",,,""",","""",","""""""",""""
쉼표는 따옴표를 사용하여 간단히 캡슐화되므로 ,
됩니다 ","
.
쉼표와 인용의 요구가 캡슐화하고 인용하는, 그래서 ","
된다 ""","""
.
답변
CSV 형식의 문제점은 사양이 하나도없고 몇 가지 허용되는 방법이 있으며 어떤 방법을 사용해야하는지 구별 할 수있는 방법이 없습니다 (생성 / 해석에 사용). 다른 게시물 에서 문자 (이 경우 줄 바꿈이지만 동일한 기본 전제)를 이스케이프 처리하는 모든 방법에 대해 논의 했습니다 . 기본적으로 의도 된 사용자를 위해 CSV 생성 / 탈출 프로세스를 사용하고 나머지는 신경 쓰지 않기를 바랍니다.
참조 사양 문서 .
답변
당신이 말한 것을 원한다면 인용 부호를 사용할 수 있습니다. 이 같은
$name = "Joe Blow, CFA.";
$arr[] = "\"".$name."\"";
이제 이름 변수에 쉼표를 사용할 수 있습니다.
답변
그 값을 인용해야합니다. 더 자세한 사양은
다음과 같습니다 .
답변
다른 답변의 요점 외에도 Excel에서 따옴표를 사용하는 경우 유의해야 할 것은 공백 배치입니다. 다음과 같은 코드 줄이 있다면 :
print '%s, "%s", "%s", "%s"' % (value_1, value_2, value_3, value_4)
Excel은 쉼표를 이스케이프 처리하는 대신 초기 따옴표를 리터럴 따옴표로 취급합니다. 코드를로 변경해야합니다
print '%s,"%s","%s","%s"' % (value_1, value_2, value_3, value_4)
나를 여기로 데려 간 것은이 미묘한 일이었습니다.
답변
나는 똑같은 문제에 직면했고 인용 ,
해도 도움이되지 않았다. 결국, I는를 대체 ,
하여 +
, 처리를 완료 OUTFILE로 출력을 저장하고 교체 +
로 ,
. 이것은 추한 것처럼 보이지만 그것은 나를 위해 일했습니다.
답변
언어에 따라 사용 가능한 to_json 메소드가있을 수 있습니다. 그것은 CSV를 깨뜨리는 많은 것들을 피할 것입니다.