无法从CSV读取特定列

问题描述 投票:0回答:1

我正在尝试在Rails 5.2.3(Ruby 2.6.3)中读取CSV文件,但未读取特定的列。

CSV文件:

barcode,hardware,title,price
2900007868390,PS4,title1,300
3499550362923,PS4,title2,1800
3499550370973,Nintendo Switch,title3,5000

and so on...

代码:

csv = CSV.read('path/to/my_csv.csv', headers: true)
csv.each do |row|
  puts "#{row['barcode']}, #{row['hardware']}, #{row['title']}, #{row['price']}"
end

结果:

, PS4, title1, 300
, PS4, title2, 1800
, Nintendo Switch, title3, 5000

and so on...

如您在上面看到的,由于某种原因,它没有读取条形码列。如果我写了row[0]而不是row['barcode'],我就设法获得了条形码值。任何想法为什么会这样?

ruby csv ruby-on-rails-5
1个回答
0
投票

这是因为我的CSV文件包含BOM表...https://en.wikipedia.org/wiki/Byte_order_mark

下面的代码解决了问题:

csv = CSV.read("resources/games/original_#{date}.csv", 'r:BOM|UTF-8', headers: true)

谢谢@dimitry_n的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.