csv.Error:迭代器应该返回字符串,而不是字节

新手上路,请多包涵

Sample.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('sample.csv', "rb")
read = csv.reader(ifile)
for row in read :
    print (row)

当我在 Python 中运行上述代码时,出现以下异常:

文件“csvformat.py”,第 4 行,在 for row in read 中:_csv.Error:迭代器应返回字符串,而不是字节(您是否以文本模式打开文件?)

我该如何解决?

原文由 user1094976 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 337
2 个回答

您以文本模式打开文件。

进一步来说:

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

编码的好猜测是“ascii”和“utf8”。您也可以关闭编码,它将使用系统默认编码,通常是 UTF8,但也可能是其他编码。

原文由 Lennart Regebro 发布,翻译遵循 CC BY-SA 3.0 许可协议

它抛出该异常的原因是因为您有参数 rb ,它以二进制模式打开文件。将其更改为 r ,这将默认以 文本模式 打开文件。

你的代码:

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

新代码:

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

原文由 MMM 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题