1. ホーム
  2. スクリプト・コラム
  3. パイソン

[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき

2022-01-10 11:08:45

質問

pythonを使ってcsvファイルを読み込みたいのですが、test.csvは以下のようなデータです。

NAME    Id   No  Dept
Tom     1    12   CS
Hendry  2    35   EC
Bahamas 3    21   IT
Frank   4    61   EE

そして、Pythonのコードは以下の通りです。

import csv
ifile  = open('test.csv', "rb")
read = csv.reader(ifile)
for row in read :
    print (row) 

このコードを実行すると、エラーが発生します。

File "csvformat.py", line 4, in for row in read : _csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

解決方法は?

テキストモードでファイルを開くと

具体的には

ifile  = open('sample.csv', "rt", encoding=<theencodingofthefile>)

エンコーディングは "ascii" と "utf8" が良いかと思われます。エンコーディングをオフにすると、システムのデフォルトエンコーディングが使用されます。