Ruby 1.9.3에서 CSV 구문 분석이 매우 취약하다는 사실을 발견했습니다. 그래서 많은 내가 뭔가 잘못하고있는 중이 야 만약 내가 궁금 있도록Ruby CSV.parse 따옴표가 붙는 경우 매우 까다 롭습니다.
나는 IRB에 다음과 같은 경우 내가 오류 얻을 : 나는 문제가 위의 여분의 공간 것으로 나타났습니다
1.9.3-p125 :011 > require 'csv'
=> true
1.9.3-p125 :012 > a = 'one,two,three, "four, five",six'
=> "one,two,three, \"four, five\",six"
1.9.3-p125 :013 > arr = CSV.parse(a)
CSV::MalformedCSVError: Illegal quoting in line 1.
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/csv.rb:1925:in `block (2 levels) in shift'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/csv.rb:1887:in `each'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/csv.rb:1887:in `block in shift'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/csv.rb:1849:in `loop'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/csv.rb:1849:in `shift'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/csv.rb:1791:in `each'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/csv.rb:1805:in `to_a'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/csv.rb:1805:in `read'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/csv.rb:1379:in `parse'
from (irb):13
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/bin/irb:16:in `<main>'
을 " 4, 5 "가치가 있습니다. 공간을 제거하면 작동합니다.
1.9.3-p125 :010 > a = 'one,two,three,"four, five",six'
=> "one,two,three,\"four, five\",six"
1.9.3-p125 :011 > arr = CSV.parse(a)
=> [["one", "two", "three", "four, five", "six"]]
다른 값 앞에 공백이 있으면 문제가 발생하지 않습니다. 다음 파스는 단지 괜찮습니다.
one, two, three,"four, five", six
구문 분석 값이 너무 약해서 따옴표로 묶인 값이 너무 약합니다.
가능한 복제본 : http://stackoverflow.com/questions/1807942/overcoming-a-basic-problem-with-csv-parsing-using-the-fastercsv-gem – WarHog
해당 답변을 구입하겠습니다. @WarHog에 감사드립니다! –