ホームページ >バックエンド開発 >Python チュートリアル >Windows 上の CSV ファイルに余分な改行が追加されるのはなぜですか?

Windows 上の CSV ファイルに余分な改行が追加されるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-28 09:02:10541ブラウズ

Why Are Extra Carriage Returns Added to My CSV Files on Windows?

Windows の CSV ファイルで余分な改行が発生する: 原因を理解する

CSV ファイルを書き込む Python コードでは、各行にWindows システムでは余分なキャリッジ リターン (「r」)。この予期しない動作により、生成された CSV ファイルが一部のアプリケーションやシステムと互換性がなくなる可能性があります。

これが起こる理由を理解するために、提供されたコード スニペットを分析してみましょう。

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'])

Python 3 では、デフォルトCSV 書き込みの動作は、ユニバーサル改行変換を使用することです。これは、Windows では、行終端文字「rn」が単一の「n」に自動的に変換されることを意味します。ただし、ファイルを「w」モードで開くと、この変換は無効になります。その結果、ライターは各行の後に「rn」を追加します。

ユニバーサル改行変換を無効にするには、ファイルを開くときに newline='' パラメーターを使用します。

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

Python 2 の場合、CSV の読み取りまたは書き込み用にファイルを開くときは、バイナリ モード (「rb」または「wb」) を使用する必要があります。 Windows:

with open('test.csv', 'wb') as outfile:
    writer = csv.writer(outfile, delimiter=',', quoting=csv.QUOTE_MINIMAL)
    ...

ファイルをバイナリ モードで開くと、改行変換が回避され、意図したとおりに「rn」がファイルに書き込まれます。

以上がWindows 上の CSV ファイルに余分な改行が追加されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。