在单个csv.new()行中创建一个带有标题的新Ruby CSV对象

Yay*_*aya 5 ruby csv

我正在尝试创建一个只包含标题行的新CSV对象,但在调用之前不会设置标题read():

[32] pry(main)> c = CSV.new("Keyword,Index,Page,Index in Page,Type,Title,URL", :headers => :first_row, :write_headers => true, :return_headers => true)
=> <#CSV io_type:StringIO encoding:UTF-8 lineno:0 col_sep:"," row_sep:"\n" quote_char:"\"" headers:true>
[33] pry(main)> c.headers
=> true
[34] pry(main)> c.read
=> #<CSV::Table mode:col_or_row row_count:1>
[35] pry(main)> c.headers
=> ["Keyword", "Index", "Page", "Index in Page", "Type", "Title", "URL"]
Run Code Online (Sandbox Code Playgroud)

这是为什么?为什么我的单行无法获得正常工作的CSV对象CSV.new

Sea*_*ond 4

正如文档将告诉您的那样,它将字符串视为文件的内容(即 StringIO),因此您仍然必须像读取任何其他 IO 源一样读取该字符串。

如果要显式设置标头,请传递一个数组作为参数:headers