在python 2中使用csv阅读器的麻烦

时间:2014-08-15 22:32:46

标签: python csv

我无法让python 2循环遍历.csv文件。下面的代码抛出错误:

>>> import csv
>>> with open('test.csv', 'rb') as f:
...     reader = csv.reader(f)
...     for row in reader:
...             print row
... 
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?

这个python 3版本工作正常,但我需要这个才能运行2.任何想法我做错了什么?

1 个答案:

答案 0 :(得分:2)

您需要使用open('test.csv', 'rU')

打开

通用换行

来自docs here的相关信息:

一种解释文本流的方式,其中所有以下内容都被识别为一行:Unix行尾约定'\ n',Windows约定'\ r \ n',以及旧的Macintosh惯例'\ r'。请参阅PEP 278和PEP 3116,以及str.splitlines()以供其他用途

here

除了标准的fopen()值模式可能是'U'或'rU'。 Python通常使用通用换行符支持构建;提供'U'将文件作为文本文件打开,但行可以通过以下任何一种方式终止:Unix行尾约定'\ n',Macintosh约定'\ r'或Windows约定'\ r \ N”。所有这些外部表示都被Python程序视为'\ n'。如果在没有通用换行符的情况下构建Python,则使用“U”的模式与普通文本模式相同。请注意,如此打开的文件对象也有一个名为newlines的属性,其值为None(如果尚未看到换行符),'\ n','\ r','\ r \ n'或包含所有元组的元组看到的新行类型。