首页 > 解决方案 > 读取带有双引号和单引号变量的 CSV 文件

问题描述

我正在处理非常大的文件(例如 1GB+),并希望从 csv 中读取一个字符串变量,该变量中可能有一个单引号或双引号。

有没有办法在打开 CSV 时快速有效地做到这一点?或者是将 quote_char 变量用于一种类型的引号并在字符串中转义另一种类型的引号的最有效方法?

CSV.foreach('file.csv', :quote_char=>"'", :force_quotes => false) do |row|
     string_value = row[0]
end

标签: rubycsvbigdata

解决方案


这是一个技巧:只需提供一个在输入符号中绝对不存在quote_char的参数:

CSV.new(%|"foo'bar",'foo"bar','foo bar',"foo bar"|, quote_char: ?*).read
#⇒ [["\"foo'bar\"", "'foo\"bar'", "'foo bar'", "\"foo bar\""]]

推荐阅读