Ruby 2.4를 사용하고 있습니다. 어떻게하면 따옴표 문자가 포함 된 탭 구분선을 구문 분석합니까? 이 TEH 예를 들어 내 포인트를 설명했지만 대답이 TEH 문자열에서 모든 따옴표를 제거 "< 될 coudl 있지만, 나는 쉽게 입력 그래서. 오는 제어 할 수 없습니다 ...따옴표가 포함 된 탭 구분선을 어떻게 파싱합니까?
2.4.0 :003 > line = "11\tDave\tO\"malley"
=> "11\tDave\tO\"malley"
2.4.0 :004 > CSV.parse(line, col_sep: "\t")
CSV::MalformedCSVError: Illegal quoting in line 1.
from /Users/davea/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/csv.rb:1912:in `block (2 levels) in shift'
from /Users/davea/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/csv.rb:1868:in `each'
from /Users/davea/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/csv.rb:1868:in `block in shift'
from /Users/davea/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/csv.rb:1828:in `loop'
from /Users/davea/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/csv.rb:1828:in `shift'
from /Users/davea/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/csv.rb:1770:in `each'
from /Users/davea/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/csv.rb:1784:in `to_a'
from /Users/davea/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/csv.rb:1784:in `read'
from /Users/davea/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/csv.rb:1324:in `parse'
from (irb):4
from /Users/davea/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/commands/console.rb:65:in `start'
from /Users/davea/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/commands/console_helper.rb:9:in `start'
from /Users/davea/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
from /Users/davea/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
from /Users/davea/.rvm/gems/[email protected]/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
지금 나에게 일어나고있는 일입니다 파싱하기 전에 "나는 가능한 한 데이터를 가깝게 보존하고 싶습니다.
내가 원하는하지 않았다 인용 각 요소를 두 배로하는 것입니다 너무 내 질문에 잡초에 도착하지만 실제로는 구분 기호 쉼표 또는 탭 수있는 CSV.parse (줄, col_sep : 구분 기호) 일반 함수가 있습니다. 다른 구분 기호가 있습니까? – Dave
CSV 라이브러리는 적어도 대략적으로 CSV "표준"에 부합하는 데이터 만 처리 할 수 있습니다. 데이터가 하위 최적의 솔루션으로 남아 있지 않기 때문에 이 답변에 대한 대안을 추가했습니다. – tadman