ruby CSV : ignoring empty column

标签 ruby string csv

当列为空时,是否可以忽略或替换为空字符串? 我的 CSV 如下所示:

"DE","Klasse","Deutsch", "x"
"EN","Class","Carpenter",
"DE","Klasse","Mathe",
,,,

所以并不是所有的列都被填满。有几个空列。它返回一个错误:

TypeError: no implicit conversion of nil into String

我所做的是:

csv_contents = CSV.read("path_to_csv", options)
str=["local, type, name"]
csv_contents.each_with_index do |row, i|
if row[3]==nil
  str << row[0] + ", " + row[1] + ", " + row[2] 
end
end

结束 我必须修改 csv,因为最后一列中包含“x”的所有行都应删除。 谁能帮我?谢谢

最佳答案

您可以添加一个方法来检查该值是否为零。如果是,则返回“”。

def get_row(row, i)
  row.nil? ? "" : row[i]
end

然后,在您的代码中使用它:

str << get_row(row, 0) + ", " + get_row(row, 1) + ", " + get_row(row, 2)

关于 ruby CSV : ignoring empty column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21705321/

相关文章:

ruby - Ruby 中的 SHA256 哈希不是预期值

c++ - Strtok 在行尾返回额外的数据

java - Apache Camel 从 body() 获取值

python - 从 CSV 文件到 Python 的实时数据流

mysql - 在 ruby​​ 中替换数字后的每个\n

ruby-on-rails - 如何解决 NotIdentifiedByImageMagickError?

java - 在 Go 中是否有等同于 Java 的 String intern 函数?

objective-c - 帮助填充数字字符串

python - 如果每行包含不同数量的字段(数量很大),如何正确读取 csv 文件?

ruby - 轨道 3 :how to generate models for existing database tables