【CSV】 더블 쿼테이션의 이스케이프에 대해 조금 조사해 보았다

4184 단어 CSV

개요



meibo.txt
john    m   18
pau",l  m   20
alice   f   15
dabid   m   17
jasmin  f   17

이런 TSV를 CSV로 변환했을 때 아래와 같이 본문에 포함된다.

meibo.csv
"john","m","18"
"pau"",l","m","20"
"alice","f","15"
"dabid","m","17"
"jasmin","f","17"


Excel에서 열린 결과





결과


" 앞에 하나 " 를 붙여 이스케이프 하고 있는 것 같다.
CSV 형식의 정의와 같습니다.
이번에 이런 부호를 쓰면 자동적으로 " 와 함께 이스케이프 되었다.

tsv_to_csv.rb
File.open('meibo2.txt', 'r:UTF-8') do |file|
  CSV.open('meibo.csv', 'w', force_quotes: true) do |csv|
    file.each do |line|
      csv << line.chomp.split("\t")
    end
  end
end

아마 " 를 썼기 때문에 자동으로 붙었을 것이다.
시험을 풀고 실행해 봅니다.

tsv_to_csv.rb
File.open('meibo2.txt', 'r:UTF-8') do |file|
  CSV.open('meibo.csv', 'w') do |csv|
    file.each do |line|
      csv << line.chomp.split("\t")
    end
  end
end

meibo.csv
john,m,18
"pau"",l",m,20
alice,f,15
dabid,m,17
jasmin,f,17

어라. " 가 있는 부분만 force_quotes: true 에 둘러싸여, 이스케이프용 " 가 제대로 붙었다." 를 쓰지 않아도 자동적으로 붙는 것 같은?
Excel에서 열어 보았습니다.


이쪽의 결과는 변하지 않았다.
데이터 형식을 csv로 바꾼 시점에서 마음대로 이스케이프 해 줄지도.

추천 소스

좋은 웹페이지 즐겨찾기