嘿伙计们,我正在编写一个 ruby 程序,它读取 CSV 格式的食品和食谱数据库,并将其写回文件。我在正确写入 CSV 文件时遇到问题
我想将对象属性写入 CSV 文件
csv_text = CSV.open("FoodDB1.txt","w") do |i|
@@dataList.each do |j|
if j.get_type == "b"
i << [j.name,j.get_type,j.cal]
elsif j.get_type == "r"
i << [j.name,j.get_type,j.print_bFood]
end
end
end
我有两种类型的物品,基本食物和食谱。两者都存储在 dataList 数组中。我检查每个对象的类型,如果它是基本食物,编写它很容易,因为它只是三个简单的字段。如果是食谱,我会写下名称、类型和构成该食谱的基本食物。
我遇到的问题是在这条线上
i << [j.name,j.get_type,j.print_bFood]
所以它会打印出食谱的名称、类型(无论是基本食物还是食谱),最后是食谱中的食物列表。那就是我遇到问题的地方。
bFood 是存储在对象中的一组基本食物,我无法将其添加到 CSV 行。我尝试创建一个方法(即 print_bFood),该方法使用 .join(",") 返回组合数组的字符串,但由于字符串中的逗号,当 CSV 将其写入文件时,它会用引号引起来
"PB&J Sandwich,r,"Jelly,Peanut butter,Bread slice, Bread slice""
我希望它看起来像这样
"PB&J Sandwich,r,Jelly,Peanut butter,Bread slice, Bread slice"
关于什么可以提供帮助的任何想法。我一直在寻找方法来做到这一点,但我再也想不出任何东西了。
我的一个想法是,如果我能够添加到一行,我可以遍历 bFood 数组并将每个数组添加到行中,但我还没有找到任何可以做到这一点的功能。