2017-09-19 56 views
0

我使用ruby生成CSV文件。我的一個數據是一個包含double quote "的字符串,例如="000123"CSV在ruby字符串中生成多個雙引號

這是我的代碼:

csv = CSV.generate do |csv| 
    csv << ["=\"000123\""] 
end 

然而,它會產生一個錯誤的字符串附加double quote

2.4.0 :005 > puts csv 
"=""000123""" 

我所期望的結果是="000123"。有誰知道原因?如何解決這個問題?

回答

2

這實際上是如何CSV轉義雙引號:

  • 如果雙引號用於封裝字段,然後一個雙引號 出現一個領域內必須通過在 之前加上另一個雙引號逃脫。例如:

    "aaa","b""bb","ccc" 
    
  • 因爲你的領域在其內部具有雙引號,您需要引用整列:

  • 每個字段可能包含或不包含在雙引號中(但是某些程序(如Microsoft Excel, 根本不使用雙引號 )。 如果字段沒有用雙引號括起來,那麼 雙引號可能不會出現在字段內。
  • (重點煤礦)如果你真的想雖然禁用該功能,只需設置quote_char到別的東西:

    puts CSV.generate(quote_char: "'") { |csv| csv << ["=\"000123\""] } 
    # ="000123" 
    
    +1

    它看起來錯誤的,但在20世紀80年代的人有很多的關於如何逃避事情的壞主意,現在我們一直堅持下去。 – tadman

    +0

    它並不比雙反斜槓差,「\\ t」顯示「\ t」而不是標籤,只是一個不同的字符 –

    相關問題