我有以下代码:
sftp = Net::SFTP.start('ftp.test.com','luigi', :password => 'pass_code')
data = sftp.download!("luigi/List.csv")
这会将data
转换为如此字符串:
2015,This is, one value, test, 9820\r\n4003, This is also one value, test, 0393
我想将CSV文件中的每一行分成一个数组值。这是我的尝试:
data.split(/\r\n/)
data.each do |record|
record.split(/,/)
end
这适用于大多数情况,但显然我的csv文件的第一行搞砸了,因为额外的逗号在我的数组中创建了另一个值:
2015,This is, one value, test, 9820
因为还有一个未被转义的逗号,我的数组看起来像这样:
["2015","This is", "one value","test","9820"]
我希望上面看起来像这样:
["2015","This is, one value","test","9820"]
甚至
["2015","This is one value","test","9820"]
是否有可能使用sftp
将我的文件下载到内存中(不是本地的,我无处可存储它)并循环遍历文件中的每一行而不用额外的逗号抛弃它们?似乎问题的根源是我做不了类似的事情:
CSV.foreach(...) do |csv_row|
但我必须使用只返回一个字符串的sftp.download!
,而不是“csv rows”数组。