我想使用Python 3读取csv文件,其中每行由换行符('\n')表示。以下是我的代码:
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模块会进行自己的(通用)换行符处理。
所以我对这个newline方法的理解是:
1)它是必需品,
2)是否表示输入文件将被空格字符拆分成行?
发布于 2016-11-08 09:56:37
newline=''
在所有csv
情况下都是正确的,在许多情况下没有指定它是错误的。文档推荐它的原因是,你是encountering.newline=''
并不意味着“空格”用于拆分;它特别是documented on the open
function如果
[newline]
为'',则启用通用换行符模式,但行尾将返回给调用方而不进行转换。
因此,对于newline=''
,所有原始的\r
和\n
字符都会原封不动地返回。通常,在通用换行符模式中,任何类似换行符的序列(\r
、\n
或\r\n
)都会在输入中转换为\n
。但是您不希望在CSV输入中这样做,因为CSV方言通常对换行符的构成非常挑剔(Excel方言只需要\r\n
)。
你的代码应该是:
import csv
with open('input_data.csv', newline='') as f:
csvread = csv.reader(f)
batch_data = list(csvread)
如果这不起作用,您需要查看您的CSV方言,并确保正确地初始化了csv.reader
。
发布于 2022-02-02 11:58:06
先生,我知道行终止符或'/n‘意思是.CSV文件概念,即逗号,用于在换行符、记事本或excel方法中使用分隔值
https://stackoverflow.com/questions/40476677
复制相似问题