記事検索

検索ワードを入力してください。
Sky Tech Blog
CSVで​表現する​セルの​中の​改行

CSVで​表現する​セルの​中の​改行

CSVファイルの規約におけるセル内改行の扱いや、スクリプトで加工する際の注意点について解説します。PowerShellやPythonのライブラリなど、改行を含むCSVデータを正しく処理する方法についても触れています。

いろいろあってCSVで出力されたデータを加工するスクリプトを書く必要に迫られました。
恥ずかしながらその過程で初めて知ったのですが、CSVって、改行コードが含まれていても規約通りなのです。
Windowsのメモ帳で、以下のようなCSVファイルを作ってみましょう。

Column1,Column2
11111,"ABC
DEF"

UTF-8(BOM付き)で保存しておくと、間違いなくExcelで読み出すことができます。
これをExcelで読み出すと、こう見えます。
””に囲まれた改行が、セル内の改行として解釈されています。

Column1 Column2
11111 ABC
DEF

CSVファイルの規約では、特殊文字は、以下の三文字です。

ダブルクォート "
カンマ ,
改行コード 目には見えない

これらの文字がカラムにいるときは、ダブルクォートで囲み、ダブルクォートはダブルクォートでエスケープする、というのがルールです。

CSVファイルを加工するスクリプトを作成していて、元データに1行中に改行が含まれるデータが含まれていて、「ちゃんと規約通りに出力してほしいなあ」と思っていたのですが、実際には、ちゃんと規約通りに出力されていたのでした。

CSVで連携するログ解析ツールなどでも、1行中に改行が複数入ることを許容していなかったりするものがあります。
自分が過去書いたコードも、結構その前提でCSVファイルって、解釈しておりました。

同様な誤解をしている人は筆者以外にもいると思いますので、恥を忍んでこういう記事を書いてみました。
PowerShellのImport-Csvコマンドレットは、きちんとこういうものも解釈してくれますし、Pythonのライブラリなんかも、きちんと処理されます。

まだまだCSVファイルは使われていくと思いますし、途中の改行を許容しない処理系も今後も存続していくでしょう。
動作仕様に合わせて、臨機応変に対応してまいります。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム