簡體   English   中英

fastcsv輸出錯誤? Ruby中的太多

[英]Wrong output in fastercsv? Too many " in Ruby

我正在Ruby中實現,我只想讀取CSV文件。 我的CSV看起來像:

"official_code","username","lastname","firstname","email","Course Groups","password"
"1626","000078sr","LENS","Ser","blab@hogent.be","project1g43","pwd7975"
"7334","000116jd","DE ","Joen","je0116@.hogent.be","project1g08","pwd5259"
"2003","000136bv","VACKE","Bert","hogent.be","project1g18","pwd5908"
"4065","000166cr","ROHøJ","Chrian","chrhogent.be","project1g10","pwd5000"

它由Excel制成,並設置為CSV文件

但是當我在應用程序中執行以下操作時:

 FasterCSV.foreach(file.path, {:headers=>true }) do |row|

            @samples[i] = row
      i += 1
    end # do

 if @samples.size > 0
      @headers = @samples[0].headers
    end 

在我看來,我只是這樣做:

<%= @headers.inspect %>


<ul>
<% @samples.each do |a| %>
<li>
<%= a %>
</li>
<% end %>
</ul>

我得到:

["\"official_code\",\"username\",\"lastname\",\"firstname\",\"email\",\"Course Groups\",\"password\""]

"""1626"",""000078sr"",""ENS"",""Sder"",""san.hogent.be"",""project1g43"",""pwd7975"""
"""7334"",""000116jd"",""DE VOS"",""Jen"",""jeroen.ogent.be"",""project1g08"",""pwd5259"""
"""2003"",""000136bv"",""VYCKE"",""Bet"",""berent.hogent.be"",""project1g18"",""pwd5908"""
"""4065"",""000166cr"",""ROøJ"",""Chstian"",""chr.hogent.be"",""project1g10"",""pwd5000"""

因此,有很多方法可以實現。有人知道我在做什么錯嗎?就像行只有1列。如果我做samples[0].each我只有1項。整行而不是列。

當您引用@samples您正在查看的是一個數組,每個都是一個解析字段的數組。

因此,當您使用@samples.each do |a| a是一行,我認為您正在該行上調用#inspect的結果。

如果嘗試這樣的話會怎樣?

options = { :headers=>true, :return_headers => true }
@samples = FasterCSV.read(file.path, options).to_a

if @samples.size > 0
  @headers = @samples.shift 
end 

如果要獲取實際標簽,則需要:return_headers=>true :headers=>true僅告訴FasterCSV有標題-默認情況下將其丟棄。 FasterCSV.read獲取並解析所有數據,這比自己構建數組更簡單。 請注意最后的to_a ,它迫使結果實際上是一個數組-可能會使下一部分變得更簡單。

如果您按如下方式修改視圖(在標題上使用#join而不是#inspect#join上添加#join )會發生什么?

<%= @headers.join(', ') %>

<ul>
<% @samples.each do |a| %>
<li>
<%= a.join(', ') %>
</li>
<% end %>
</ul>

如果那不能解決問題,希望您至少應該進一步了解正在發生的事情...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM