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 サイトの他の関連記事を参照してください。