ruby - 在 Ruby 中使用转义换行符解析 CSV 文件?

标签 ruby csv parsing newline

如何在 Ruby 中解析带有转义换行符的 CSV 文件?我在 CSV 或 FasterCSV 中没有看到任何明显的内容。

这是一些示例输入:

"foo", "bar"
"rah", "baz \
and stuff"
"green", "red"

在 Python 中,我会这样做:

csvFile = "foo.csv"
csv.register_dialect('blah', escapechar='\\')
csvReader = csv.reader(open(csvFile), "blah")

最佳答案

如果包含换行符的字段被正确引用(如在您的示例数据中),那么 Ruby 的 csv 解析器可以很好地处理它们。但是,如果您想让 Ruby 删除转义字符(因为 Python 似乎可以通过设置 escapechar 来完成),那么我在 Ruby 文档中也没有看到相应的方法。 (顺便说一下,从 Ruby 1.9 开始,FasterCSV 是 Ruby 的默认 csv 实现。)

#!/usr/bin/env ruby -w
require 'csv'

CSV.foreach('test.csv') do |rec|
  puts "Record: #{rec}"
end

输出:

telemachus ~ $ ruby read.rb 
Record: ["foo", "bar"]
Record: ["rah", "baz \\\nand stuff"]
Record: ["green", "red"]

关于ruby - 在 Ruby 中使用转义换行符解析 CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1105882/

相关文章:

c - 根据空格或 "double quotes strings"将字符串解析为数组

mysql - key 'xyz@gmail.com'的Rails重复条目 'index_users_on_email'

ruby-on-rails - Cocoon添加关联,如何限制关联数

ruby-on-rails - 如何验证字符串的第一个字符不是整数?

ruby - 如果需要,如何使用 gsub 添加尾部斜线

python - 在 csv Python 中添加中间列

MySQL导入CSV转换日期格式

c#-4.0 - 如何正确读取文本文件中的列

Java XPath - 查找前缀为的标签

javascript - 是否可以在 JS 代码中以编程方式设置 Jison 解析器的状态?