当前位置: 首页 > 面试题库 >

在Windows上,Python中的CSV添加了额外的回车符

空英逸
2023-03-14
问题内容
import csv
outfile = file('test.csv', 'w')
writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
writer.writerow(['hi','dude'])
writer.writerow(['hi2','dude2'])
outfile.close()

它会生成文件,每行test.csv都有一个额外的文件\r,如下所示:

test.csv
hi,dude\r\r\nhi2,dude2\r\r\n

而不是预期的:

hi,dude\r\nhi2,dude2\r\n

为什么会发生这种情况,或者这实际上是预期的行为?

注意:
- Python 2或3可能会发生此现象。


问题答案:

Python 3:

如YiboYang所述,newline=''

with open('output.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    ...

如CoDEmanX的评论所述,setnewline='\n'

with open('output.csv', 'w', newline='\n', encoding='utf-8') as f:
    writer = csv.writer(f)
    ...

Python 2:

在Windows上,在将文件传递到或之前,始终以二进制模式("rb""wb")打开文件。csv.readercsv.writer

尽管该文件是文本文件,但是所涉及的库将CSV视为二进制格式,并带有\r\n单独的记录。如果隔板是写在文本模式中,Python运行时替换\n使用\r\n,因此\r\r\n在该文件中观察到的。



 类似资料:
  • 问题内容: 输入文件: python代码: 问题: 如您所见,输出在每个项目之间都有多余的行。 如何预防呢? 问题答案: 追加一个换行符,并且输入行已经以换行符结尾。 一个标准的解决方案是逐字输出输入行: PS :对于Python 3(或具有打印功能的Python 2),abaront的解决方案是最简单的解决方案。

  • 问题内容: 假设我有一个NumPy数组a: 我想添加一列零以获取一个数组b: 我如何在NumPy中轻松地做到这一点? 问题答案: 我认为,更简单,更快速的启动方法是执行以下操作: 和时间:

  • 我在一个嵌入zuul的Spring引导应用程序后面有几个微服务,让我们称之为“网关”。 这是我的配置文件: 我想在网关应用程序中显示我的每项服务的文档,因此我创建了以下内容: 它工作得非常好:每次用户转到/gateway/api/login,它都会被重定向到我的微服务,也就是/thelogin/。此外,当用户转到/gateway/login/swagger用户界面时。html他们可以查看文档。 问

  • 我有一个文件,其中包含以下数据: 我正在尝试插入一个名为“Date”的列作为第一列。 我使用的进出口商品如下: 但上述情况并没有如预期的那样起作用。它正在替换列数据。

  • 我需要在我显示的地图上的标记周围添加额外的填充。 这是到目前为止的代码,但顶部和底部或西部和东部标记在屏幕的边缘。

  • 问题内容: 我有这两个课(表) 还有这个: 运行此代码后,在数据库(student_course)中创建了一个额外的表,现在我想知道如何在该表中添加额外的字段,例如(Grade,Date和…(我的意思是student_course表)),我看到了一些解决方案,但我不喜欢它们,而且我对它们有一些问题: 第一个样品 问题答案: 如果在链接表(STUDENT_COURSE)上添加额外的字段,则必须根据s