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

2023-12-08

import csv

with open('test.csv', 'w') as outfile:
    writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
    writer.writerow(['hi', 'dude'])
    writer.writerow(['hi2', 'dude2'])

上面的代码生成一个文件,test.csv,还有一个额外的\r在每一行,像这样:

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

而不是预期的

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

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


Python 3:

官方csv文档推荐open荷兰国际集团的文件newline=''在所有平台上禁用通用换行符翻译:

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

CSV 编写器以以下方式终止每一行lineterminator方言的,即'\r\n'对于默认的excel所有平台上的方言,因为这就是RFC 4180推荐。


Python 2:

在 Windows 上,始终以二进制模式打开文件("rb" or "wb"),然后将它们传递给csv.reader or csv.writer.

虽然该文件是文本文件,但 CSV 被视为binary所涉及的库的格式,与\r\n分隔记录。如果该分隔符是以文本模式编写的,Python 运行时将替换\n with \r\n,因此\r\r\n文件中观察到。

See 之前的这个答案.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的 CSV 在 Windows 上添加额外的回车符 的相关文章

随机推荐

  • 计算 pandas 中连续 1 的组数

    我有一个 1 和 0 列表 我想计算连续 1 的组数 mylist 0 0 1 1 0 1 1 1 1 0 1 0 手工做给我们 3 个组 但是有没有办法用 python 来做呢 在这里 每当有从 0 到 1 的跳跃时 我都会进行计数 前面
  • 在 Ruby 中是否可以显式创建局部变量

    e g x 123 p Proc new x I do not want change the value of the outer x I want to create a local x 在 Ruby 中是否有与 Perl 中的 my
  • Spring表单:输入HTML5必需的属性

    我正在使用 Spring 表单 并且想使用 Spring 表单似乎不支持的 HTML5 required 属性
  • 导航到不同 ViewController 时 BLE 外设断开连接

    我正在开发具有多个 ViewController 的 BLE iOS Swift 应用程序 主 ViewController 有一个按钮 可导航到 TableViewController 该按钮已检测到要连接的 BLE 设备 但是 当我返回
  • 当 STDIN、STDOUT 和 STDERR 关闭时 perl bug?

    当编写守护进程时 我想关闭 STDIN STDOUT 和 STDERR 以实现 良好的守护进程行为 但我很惊讶 随后打开的文件需要与旧的 STDIN STDOUT 和 STDERR 相同的属性 因为它们的 fileno s 被重新打开 这是
  • XML 中“图像上缺少 contentDescription 属性”

    我收到一条警告 辅助功能 图像上缺少 contentDescription 属性在日食中 此警告显示在第 5 行 声明ImageView 在下面的 XML 代码中 构建和运行我的应用程序时不会出现任何错误 但我真的很想知道为什么我会收到这个
  • 如何找到有关文件描述符的更多信息?

    我正在尝试调试一个挂起的进程 进程 id 的 strace 输出有最后一行 recvfrom 9
  • 在 Android 上以静音模式播放声音时出现问题

    我正在编写一个Android应用程序 无论手机处于何种模式 即使它处于静音模式 都可以简单地播放闹钟 我找到了这个question并使用答案中的代码来覆盖当前的音量状态 我的代码如下所示 Uri alert RingtoneManager
  • 如何在WordPress中使用媒体上传来上传视频文件?

    我有一个帖子类型 用于在 WordPress 中上传横幅 使用名称 图像 视频和 url 的自定义字段 默认媒体上传可以很好地上传图像 视频 但我的问题是我无法将视频基本网址获取到自定义字段 这是我的代码 无法获取视频网址 它只给我视频文件
  • Mapstruct:使用加法器时清除更新集合

    我尝试将 DTO 对象映射到 JPA 实体 我有一个集合children in my ParentEntity 可以添加它们addChild Mapstruct 通过以下方式支持使用加法器CollectionMappingStrategy
  • JButton() 仅在鼠标悬停时起作用

    import java awt import java awt image import java awt event import javax imageio import java lang import java io import
  • json.net 将字符串反序列化为嵌套类

    我收到从 http 请求返回的 Json 字符串 如下所示 info calls 0 errors error1 error2 error3 messages 0 mail 3 received 5 valid 3 我试图反序列化的实体的结
  • 如何在 MySQL 替换命令中使用正则表达式?

    我的目标是用包罗万象的链接替换数据库中的链接 我通常使用 REPLACE 命令来替换数据库中的字符串 但这次我遇到了困难 因为为了找到链接 我需要使用正则表达式 而这根本行不通 UPDATE node revisions SET body
  • R 抑制依赖项中的startupMessages

    我的 R 包的依赖项之一在加载时显示启动消息 我想抑制这些启动消息 到目前为止 我发现的唯一修复是从我的描述文件中的 Depends 行中删除有问题的包 然后打电话suppressPackageStartupMessages require
  • Android 选项卡 - 开始一个新活动

    TabHost 中有 4 个选项卡 分别是 A B C 和 D 现在每个选项卡只是一个索引页 单击其中任何一个都会显示不同的活动 问题是 当用户从选项卡中显示的内容中选择某些内容时 我需要启动另一个活动 其他活动也应该显示在父选项卡本身中
  • 使用谷歌分析跟踪重定向页面

    我正在尝试使用谷歌分析跟踪重定向页面 我有一个名为redirect php 当我访问像这样的网址时redirect php c 12345678 一个 php 函数对 sql 查找表进行查询以解码代码12345678使用先前插入的 url
  • 有条件地生成表格行中断

    我有一个 table 有两个单元格 如果设备是计算机 我想水平显示 如果设备是移动设备 我想垂直显示 我借用了一个JS函数来从这个答案中检测移动设备https stackoverflow com a 11381730 3298930效果很好
  • 在 PyGame 中,如何在不使用 sleep 函数的情况下每 3 秒移动一个图像?

    最近我学习了一些基本的Python 所以我正在使用PyGame编写一个游戏来提高我的编程技能 在我的游戏中 我想每3秒移动一个怪物的图像 同时我可以用鼠标瞄准它并点击鼠标射击它 一开始我尝试使用时间 睡眠 3 但结果却暂停了整个程序 并且我
  • iCloud 仪表板:无法将 CloudKit 架构部署到生产环境 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我有一个已发布的应用程序 具有现有的生产模式 我对开发模式进行了更改 现在我想部署到生产中 点击后Deploy Schema to Production 弹出对话框显示The
  • Python 中的 CSV 在 Windows 上添加额外的回车符

    import csv with open test csv w as outfile writer csv writer outfile delimiter quoting csv QUOTE MINIMAL writer writerow