Line break code in CSV file

1.CSVファイルの改行コード

ボウリングのスコア管理プログラムで、CSVファイルを読み込むようにしていますが、

先日、その改行コードの違いにより、プログラムが正しく動作しないことがありました。

2.Excelで保存のCSVファイル

テスト用として、下記のようなデータをCSVファイルとして保存しました。

サンプルCSV
Screenshot

このファイルをバイナリエディタで開くと、下記のようなデータとなっています。

バイナリコード
Screenshot

上記の通り、改行コードとしては、「0D,0A」(CRLF)となっています。

しかし、最後の改行コードがありません。

この点は留意しないといけません。

このCSVファイルをプログラム上で開いた後、データを追加して保存するような場合、

最後の改行コードが抜けてしまうことになるので、データ追加前に改行コードを挿入するなどの処理が必要になります。

3.テキストエディタで保存

テキストエディタで簡単に改行コードを入れようと、テキストエディタで開くと下記のようになっていました。

カーソルを動かしていくと、最終行の右端までしかいかず、最終行が改行されていないことがわかります。

テキストエディタ
Screenshot

そして、最終行に改行を入れると下記のようになり、テキストエディタ上は改行されます。

Screenshot

それをそのまま保存し、バイナリエディタで開くとどうなるかというと、下記のようになります。

最終行の改行コードが「0A」(LF)しかないことがわかります。

テキストエディタ
Screenshot

4.プログラム修正

改行コードを自動処理するためのファイルオープン処理のオプションがあり、

プログラム修正を行い対処しました。

下記のような「newline」オプションを指定することで、改行コードを自動認識してくれるようになります。(書き込み時のOPENでも同様に指定すればOKです)

fr = open(“bs2025.csv”, newline=”)


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です