質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

424閲覧

CSVファイルの特定カラムが読み込まれない

ta539tg70

総合スコア20

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/04/29 03:27

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 ...

コード:

ruby

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

出力結果:

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

上記の通り、なぜかバーコードカラムだけ読み込まれない現象が起きています。
row['barcode'] の代わりに row[0] と書けば正しく値を取得できたのですが、なぜ row['barcode'] では動かないのかお分かりになる方はいらっしゃいますでしょうか?(可読性的に、できれば row['barcode'] と書きたいのです...。)
ご教示の程よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

記載頂いたコードを私の環境で検証しましたが問題なく表示されました。
おそらくコード自体に問題があるわけではないように思います。
(記載頂いた以外の部分で原因がある可能性はありますが)

あとCSVファイルですが、こちらはExcelなどで作成されたものでしょうか?
もし開発環境がWindowsならメモ帳でこのCSVファイルを開いた時に何か不要なデータが入っていたり、
変なところにカンマが入っていたり、ダブルクォーテーションで囲まれていたりしないかなど一度確認してみて下さい。

投稿2020/04/29 04:15

gnfreeworks

総合スコア306

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ta539tg70

2020/04/30 06:17

提供されたxlsxファイルをMacのMicrosoft Excelで開きCSV化したものでした。 提供元の環境がWindowなのかMacなのか定かではありませんが、恐らくWindowsだと思われます。 自前Macのテキストエディタで開いた分には特におかしな箇所は見つかりませんでしたが、Winのメモ帳で開いたらもしかしたら何かあるかもしれないですね><(手元にWin環境がないので確認できず...) コメントありがとうございました。
guest

0

ベストアンサー

多分bomが先頭についています。

ruby

1csv = CSV.read('path/to/my_csv.csv', 'r:BOM|UTF-8', headers: true)

投稿2020/04/29 03:42

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ta539tg70

2020/04/29 03:51

bomとは初めて聞きました...! ご教示いただいたコードで試してみたところ動きました! これだけの情報でそこまで推測できるなんてすごいです...! 本当に助かりましたし、今後のためにもなりそうです。ありがとうございました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問