读取带有双引号和单引号变量的 CSV 文件

Posted

技术标签:

【中文标题】读取带有双引号和单引号变量的 CSV 文件【英文标题】:Read CSV files with both Double and Single quote variables 【发布时间】:2019-01-30 07:12:14 【问题描述】:

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

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

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

【问题讨论】:

您能否添加一个简短的 CSV 示例来说明您的问题和预期输出? 1,243242,你好“世界” 提供的示例不包含带有 both 单引号和双引号的字段。请仔细提供正确的例子。 上面的代码可以处理单引号但不能处理双引号,但是ok,这里再举一个例子:1,243242,hello "world" 1,243242,hey 'there' 2,34343,bye bye 【参考方案1】:

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

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

【讨论】:

以上是关于读取带有双引号和单引号变量的 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章

Perl双引号和单引号的区别

PHP双引号和单引号引起麻烦

如何在 Powerhsell 中定义同时包含符号双引号和单引号的字符串?

PHP字符串定义方式和单引号双引号的区别

C语言文件怎样读取双引号中的字符串

Pyspark:读取带有双引号和逗号的字段的csv文件