ホームページ >バックエンド開発 >Python チュートリアル >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 サイトの他の関連記事を参照してください。