2015-12-30 118 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"]