【问题标题】:How do I parse JSON quotes in CSV?如何解析 CSV 中的 JSON 引号?
【发布时间】:2013-06-09 04:43:43
【问题描述】:

我正在尝试解析一些包含随机 JSON 的 CSV。 JSON 有双引号:

csv = CSV.parse('example,json=[{"json": "obj"}],endexample')
CSV::MalformedCSVError: Illegal quoting in line 1.
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1925:in `block (2 levels) in shift'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1887:in `each'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1887:in `block in shift'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1849:in `loop'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1849:in `shift'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1791:in `each'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1805:in `to_a'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1805:in `read'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1379:in `parse'
  from (irb):13
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/bin/irb:12:in `<main>'

我读到在 CSV 中,你在引号中转义了引号,所以我尝试了类似 .gsub('"','""') 的方法,但这没有帮助。

csv = CSV.parse('example,json=[{""json"": ""obj""}],endexample')
CSV::MalformedCSVError: Illegal quoting in line 1.
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1925:in `block (2 levels) in shift'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1887:in `each'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1887:in `block in shift'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1849:in `loop'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1849:in `shift'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1791:in `each'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1805:in `to_a'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1805:in `read'
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1379:in `parse'
  from (irb):17
  from /Users/kevzettler/.rbenv/versions/1.9.3-p194/bin/irb:12:in `<main>' 

【问题讨论】:

    标签: ruby json csv double-quotes


    【解决方案1】:

    来自关于 CSV 的维基百科:

    • 包含换行符、双引号和/或逗号的字段应为 引。 (如果不是,该文件可能无法 正确处理)。
    • 字段中的(双)引号字符必须是 由两个(双)引号字符表示。

    试试这个:

    csv = CSV.parse('example,"json=[{""json"": ""obj""}]",endexample')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-28
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多