【发布时间】:2017-03-21 11:24:21
【问题描述】:
我想使用 Python 3 读取每行由换行符 ('\n') 指示的 csv 文件。这是我的代码:
import csv
with open(input_data.csv, newline ='\n') as f:
csvread = csv.reader(f)
batch_data = [line for line in csvread]
以上代码报错:
batch_data = [line for line in csvread].
_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
阅读这些帖子:CSV new-line character seen in unquoted field error,还尝试了我能想到的这些替代方案:
with open(input_data.csv, 'rU', newline ='\n') as f:
csvread = csv.reader(f)
batch_data = [line for line in csvread]
with open(input_data.csv, 'rU', newline ="\n") as f:
csvread = csv.reader(f)
batch_data = [line for line in csvread]
目前还没有得到正确的运气。有什么建议吗?
我也在阅读documentation about newline:如果没有指定newline='',嵌入在引用字段中的换行将不会被正确解释,并且在使用\r\n行的平台上会额外写一个\r添加。指定 newline='' 应该始终是安全的,因为 csv 模块自己(通用)换行符处理。
所以我对这种换行方式的理解是:
1)这是必需品,
2) 它是否表明输入文件将被空格字符分割成行?
【问题讨论】:
-
尝试以二进制模式打开文件
open("filename.csv", 'rb') -
我已经看到文件中有单独的 CR (\r) 时会发生这种情况。尝试拆分行并去除空格。
-
你应该在 Python 3 中传递
newline=''并让csv模块处理换行符。 -
@thebjorn:这仅在 Python 2 上有效。
标签: python python-3.x csv