Rails 未从 CSV 中读取特定列
Rails Not Reading a Specific Column from CSV
我试图在 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']
.
,我已经设法获得了条形码值
知道为什么会这样吗?
这是因为我的 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的帮助!
我试图在 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']
.
,我已经设法获得了条形码值
知道为什么会这样吗?
这是因为我的 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的帮助!