如何將我的文件設置爲不拉入我的csv文件中的頭文件?我曾經嘗試這樣做:在Ruby中返回CSV頭文件
CSV.foreach(email_response_file, :col_sep => "\t", :return_headers => false) do |column|
....
end
但是,無論我是否設置:return_headers
爲真或假的我還是拉頭。我怎樣才能擺脫它們?我假設我的問題是我正在使用的.foreach
方法。
如何將我的文件設置爲不拉入我的csv文件中的頭文件?我曾經嘗試這樣做:在Ruby中返回CSV頭文件
CSV.foreach(email_response_file, :col_sep => "\t", :return_headers => false) do |column|
....
end
但是,無論我是否設置:return_headers
爲真或假的我還是拉頭。我怎樣才能擺脫它們?我假設我的問題是我正在使用的.foreach
方法。
:return_headers
只有在:headers
是true
時纔有效,但它不會按照您認爲的方式工作。
如果您的CSV數據包含標題行,只需設置headers: true
並且第一行不會作爲數據行返回。相反,它被解析並允許您通過它的頭訪問一個字段(如哈希):
require 'csv'
data=<<-eos
id,name
1,foo
2,bar
eos
CSV.parse(data, headers: true) do |row|
puts "ID: " + row["id"]
puts "Name: " + row["name"]
puts "1st col: " + row[0]
puts "2nd col: " + row[1]
puts "---"
end
輸出:
ID: 1
Name: foo
1st col: 1
2nd col: foo
---
ID: 2
Name: bar
1st col: 2
2nd col: bar
---
我想你想headers: false
,如果失敗,你總是可以跳過第一行(不foreach
返回一個迭代?)
CSV.foreach(file).each_with_index do |row, idx|
end
而且,這只是語義,但是的foreach返回行,而不是列
你也可以使用CSV.table閱讀該.csv文件放入表中。
datatable = CSV.table("file path")
和
puts datatable.headers()
大 - 這完全說明了它,並解決了問題。我絕對誤解':return_headers'是如何工作的。謝謝你的提示。 – Luigi