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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-27 21:54:11475ブラウズ

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

トラブルシューティング: Windows で Python の CSV ファイルに余分な復帰が追加される

Windows システム上で Python で CSV ファイルを書き込むときに、追加の r が追加されるという予期しない問題が発生します。文字はファイル内の各行の末尾に表示されます。予想される 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'])

このコードは、['hi', 'dude'] と 2 行のデータを含む test.csv という名前の CSV ファイルを生成するように設計されています。 ['hi2'、'dude2']。ただし、生成されたファイルを検査すると、各行の末尾に 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 の Python 2 では、ファイルを渡す前に、'rb' または 'wb' を使用してバイナリ モードでファイルを開くことが重要です。 csv.reader または csv.writer のいずれかに。ファイルはテキスト ファイルであるにもかかわらず、CSV は関連するライブラリによってバイナリ形式とみなされ、レコードが rn で区切られます。この区切り文字をテキスト モードで記述すると、Python ランタイムに n を rn に置き換えるよう指示され、その結果、ファイル内で確認される rrn シーケンスが生成されます。この側面の詳細については、この以前の回答を参照してください。

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

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