参数“newline=''”在python中的open函数中起什么作用?

2024-06-30 15:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我是StackOverflow新手,如果这是一个重复/愚蠢的问题,非常抱歉

我在Codecademy中学习python,他们在讨论如何对CSV文件使用open函数。我无法真正理解参数“newline=''”对代码意味着什么

import csv

with open('addresses.csv', newline='') as addresses_csv:
  address_reader = csv.DictReader(addresses_csv, delimiter=';')
  for row in address_reader:
    print(row['Address'])

Tags: 文件csv函数代码参数addressaddressesnewline
2条回答

在unix和windows上识别换行符的细微差别(“\n”与“\r\n”)

让我们考虑以下内容的文件'TeX.txt(在Windows中)

cat text.txt
welcome
to
stackoverflow

windows中的默认换行符为“\r\n” 现在,当您读取文件时,windows中此处的默认换行符“\r\n”将转换为“\n”(通用模式)

>>>with open('text.txt','rt') as f: #Note Console (not using print(f.read())
     f.read()
#output 
'welcome\nto\nstackoverflow'

现在,open()的换行符参数出现了 默认情况下,由于上述原因,换行符为“无”\r\n“转换为”\n”

如果不需要转换为通用模式('\n'),则可以使用换行符=''来打开

with open('text.txt','rt',newline='') as f:
    f.read()  
#output 
'welcome\r\nto\r\nstackoverflow'  (now 'r\n' not '\n')

此外,换行符只能为None或“”

csv.DictReader函数中,迭代addresses.csv中的行,并将每一行映射到dict。检查csv文件中带引号的字段,并查看是否有任何用于结束'\r\n'行的转义序列-请注意,当您在代码中包含newline参数时会发生什么,而不是当您不包含时。不包括newline参数可能会添加一个您不想要的额外行结尾。包含newline参数允许csv模块自行处理行尾-复制csv中定义的格式

相关问题 更多 >