2015-12-30 121 views
1

我有一個CSV像這樣的例子:雙引號

ACCOUNT:STATUS:FIRST_NAME:LAST_NAME 
12345:1:My "Problematic" Name:Last Name 

如果我使用CSV.foreach我得到消息: 非法引用在第2行

我該如何正確處理這並仍然保留在我讀的字符串中的引號?

我當前的代碼:

CSV.foreach("accounts_data.csv", { :col_sep => ':', headers: true }) do |account| 
end 
+0

對於CSV吃你的線,應該是這樣的:'12345:1: 「我的 」「 有問題」 的 「名稱」:最後Name'。如果你的文件不是太大,你可以手動完成。 –

回答

1

您可以設置選項來指定col_sep爲您的文件使用冒號(:)作爲分隔符,並quote_char單引號只是爲了讓周圍的雙引號的問題。

CSV.foreach("/path/to/file", {quote_char: "'", col_sep: ":"}) do |row| 
    p row 
end 

輸出:

["ACCOUNT", "STATUS", "FIRST_NAME", "LAST_NAME"] 
["12345", "1", "My \"Problematic\" Name", "Last Name"]