1. ホーム
  2. python

csv.Error: イテレータはバイトではなく文字列を返すべき

2022-02-08 04:42:38
<パス

python の csv ファイル読み込みの問題

with open("fer2013.csv", "rb", encoding="utf-8") as vsvfile:
   reader = csv.reader(vsvfile)
   rows = [row for row in reader]
   print(rows)

出力します。

Error: iterator should return strings, not bytes (did you open the file in text mode?)

質問分析

このcsvファイルはバイナリファイルではないので、単なるテキストファイルです。

問題解決

with open("fer2013.csv", "rt", encoding="utf-8") as vsvfile:
   reader = csv.reader(vsvfile)
   rows = [row for row in reader]
   print(rows)

または

# Because open() opens text files by default
with open("fer2013.csv", "r", encoding="utf-8") as vsvfile:
   reader = csv.reader(vsvfile)
   rows = [row for row in reader]
   print(rows)