首页 >后端开发 >Python教程 >为什么我的 Python CSV 文件在 Windows 上添加额外的回车符?

为什么我的 Python CSV 文件在 Windows 上添加额外的回车符?

Linda Hamilton
Linda Hamilton原创
2024-11-27 21:54:11473浏览

Why Does My Python CSV File Add Extra Carriage Returns on Windows?

疑难解答:Python 中的 CSV 文件在 Windows 上附加额外的回车符

在 Windows 系统上用 Python 编写 CSV 文件时,出现意外问题,其中附加了一个回车符字符出现在文件中每行的末尾。这种与预期 rn 行终止的偏差引起了关注,让开发人员想知道根本原因以及这是否是预期行为。

为了深入研究此问题的根源,让我们分析提供的代码片段:

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 的 CSV 文件,其中包含两行数据:['hi', 'dude'] 和 ['hi2', '老兄2']。然而,在检查生成的文件时,我们发现每一行都带有一个额外的 r 字符后缀。

为了理解这种行为,我们转向 csv 模块的 Python 文档。根据文档,建议在所有平台上打开带有 newline='' 的文件以禁用通用换行符翻译。

对于 Python 3:

默认,在 Windows 上,csv 模块使用通用换行符转换,在写入文件时将 rn 行终止符转换为 n。为了防止这种翻译并保持原始的 rn 行终止符,需要使用 newline='' 打开文件,如下所示:

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

对于 Python 2:

在 Windows for Python 2 上,在将文件传递给任何一个之前,使用“rb”或“wb”以二进制模式打开文件至关重要csv.reader 或 csv.writer。尽管该文件是文本文件,但 CSV 被相关库视为二进制格式,并用 rn 分隔记录。在文本模式下写入此分隔符会提示 Python 运行时将 n 替换为 rn,从而在文件中产生观察到的 rrn 序列。有关这方面的更多详细信息,请参阅之前的答案。

以上是为什么我的 Python CSV 文件在 Windows 上添加额外的回车符?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn