newline='' 在 csv 库中是啥意思?
Posted
技术标签:
【中文标题】newline=\'\' 在 csv 库中是啥意思?【英文标题】:What does newline='' mean in the csv library?newline='' 在 csv 库中是什么意思? 【发布时间】:2022-01-22 11:26:48 【问题描述】:我正在阅读有关 python 中的 CSV 库的信息,然后卡在这一行:“如果 csvfile 是文件对象,则应使用 newline='' 打开它。”你能解释一下这是什么意思吗?或者给我一个可以找到确切含义的例子?
在这里,您可以找到带有示例的 CSV 库的链接: https://docs.python.org/3/library/csv.html#csv-fmt-params
我还在屏幕截图中突出显示了该行,但不知道您是否可以看到它。
【问题讨论】:
docs.python.org/3/library/functions.html#open-newline-parameter 非常感谢,但对我来说还不够清楚:(''
,不是"."
【参考方案1】:
Python 的文件对象在读取文件时默认使用universal newlines。这意味着当您读取文件时,'\n'
、'\r'
和 '\r\n'
字符串中的任何一个都将转换为 '\n'
。 csv
模块不希望文件对象执行通用换行转换,因为 CSV 的某些方言允许换行符出现在带引号的字符串中。
例如,这可以解释为一个 3 行 CSV,在第二行的字符串中间有某种换行符(它应该完全按照它在文件中出现的形式保留,因为换行符是数据的一部分):
1,"foo bar",2
3,"baz
quux",4
5,"spam spam",6
csv
模块自己处理Reader
对象中的换行符,因此它希望file
对象传递未修改的换行符。这就是newline=''
告诉open
你想要的功能。
【讨论】:
@SiamakMushakhian。你现在有足够的声望来投票以上是关于newline='' 在 csv 库中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章