首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用Python读取csv时指定换行符('\n')

在使用Python读取csv时指定换行符('\n')
EN

Stack Overflow用户
提问于 2016-11-08 07:47:17
回答 2查看 32.7K关注 0票数 5

我想使用Python 3读取csv文件,其中每行由换行符('\n')表示。以下是我的代码:

代码语言:javascript
运行
复制
import csv
with open(input_data.csv, newline ='\n') as f:
        csvread = csv.reader(f)
        batch_data = [line for line in csvread]

上面的代码给出了错误:

代码语言:javascript
运行
复制
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,我也尝试了这些我可以考虑的替代方案:

代码语言:javascript
运行
复制
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)是否表示输入文件将被空格字符拆分成行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-08 09:56:37

  1. newline=''在所有csv情况下都是正确的,在许多情况下没有指定它是错误的。文档推荐它的原因是,你是encountering.
  2. newline=''并不意味着“空格”用于拆分;它特别是documented on the open function

如果[newline]为'',则启用通用换行符模式,但行尾将返回给调用方而不进行转换。

因此,对于newline='',所有原始的\r\n字符都会原封不动地返回。通常,在通用换行符模式中,任何类似换行符的序列(\r\n\r\n)都会在输入中转换为\n。但是您不希望在CSV输入中这样做,因为CSV方言通常对换行符的构成非常挑剔(Excel方言只需要\r\n )。

你的代码应该是:

代码语言:javascript
运行
复制
import csv
with open('input_data.csv', newline='') as f:
    csvread = csv.reader(f)
    batch_data = list(csvread)

如果这不起作用,您需要查看您的CSV方言,并确保正确地初始化了csv.reader

票数 10
EN

Stack Overflow用户

发布于 2022-02-02 11:58:06

先生,我知道行终止符或'/n‘意思是.CSV文件概念,即逗号,用于在换行符、记事本或excel方法中使用分隔值

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40476677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档