CSVでカンマや改行を含むセルの書き方|ダブルクォートの規則
CSVでカンマ・改行・ダブルクォートを含むセルは、セル全体を「"」で囲み、中の「"」は「""」と2つ重ねて書きます。カンマのあとに空白を入れて囲むと囲みとして読まれず、列がずれます。崩れ方から原因を見分ける方法も実例で説明します。
公開読了目安 約5分
この記事の要点
- カンマ・改行・ダブルクォートを含むセルは、セル全体をダブルクォートで囲む
- 囲んだセルの中のダブルクォートは、2つ重ねて書く
- カンマのあとに空白を入れてから囲むと、囲みとして読まれず列がずれる
- 囲みを閉じ忘れると、そこから後ろが1つのセルにつながる
- 改行を含むセルがあると、ファイルの行数とデータの件数が合わなくなる
目次
CSVでカンマ・改行・ダブルクォートを含むセルは、セル全体をダブルクォート(")で囲みます。
囲んだセルの中に " を書くときは、"" と2つ重ねます。
この2つが、CSVの書き方をまとめた RFC 4180 の決まりです。 決まりから外れたときの崩れ方には型があり、崩れ方を見れば原因の見当がつきます。
この記事の読み取り結果は、このサイトのCSV⇔JSON変換ツールと、Python 3 の csv モジュールの2つで確かめました。 表計算ソフトでの開き方は、ソフトごとに違いうるので扱いません。
囲む必要があるのは3種類の文字を含むセル
CSVは、カンマでセルを区切り、改行で行を区切ります。 そのため、セルの中身にカンマや改行が入ると、区切りと見分けがつかなくなります。
囲みが要るのは、次の3つのどれかを含むセルです。
- カンマ: 「港区1-2-3, 2階」のような住所
- 改行: 2行に分けて書いたメモ
- ダブルクォート:
"特選"のように引用符を使った商品名
3つとも含む例を書くと、次のようになります。
名前,住所,メモ
山田,"東京都港区1-2-3, 2階","1行目
2行目"
佐藤,大阪市,"商品名は""特選""です"
このCSVは、見出しのほかに2件のデータとして読まれます。 山田さんの住所は「東京都港区1-2-3, 2階」で1つのセル、メモは改行を含んだ1つのセルです。
佐藤さんのメモは 商品名は"特選"です と読まれます。
囲みの中の "" が、1つの " に戻るからです。
囲んだセルの中の引用符は2つ重ねる
囲みの中で " を1つだけ書くと、そこで囲みが閉じたと読まれます。
中身として " を書きたいときは、"" と2つ続けます。
たとえば 15"モニター と書きたいなら、セルは "15""モニター" です。
囲まずにそのまま書く形は、RFC 4180 の決まりからは外れます。
確かめた2つの読み取りでは、囲んでいないセルの途中の " は、そのまま文字として読まれました。
ただし決まりの外の書き方なので、読み取る側によって結果が変わりえます。
崩れ方から原因を見分ける
崩れたCSVは、読み取った結果の形から原因を絞れます。 よく出る形を3つ並べます。
項目が見出しより多い行がある
住所の「2階」が、次の列や見出しの無い列に押し出される形です。 カンマを含むセルを囲み忘れると、この形になります。
名前,住所
山田,東京都港区1-2-3, 2階
この行は「山田」「東京都港区1-2-3」「 2階」の3項目に分かれます。 見出しは2項目なので、「 2階」の行き場がありません。
CSV⇔JSON変換 でJSONにすると、見出しより多い分はJSONに入りません。 そのかわり「確認してください」の欄に、見出しより項目が多いデータの件数と、JSONの何件目かが出ます。
カンマのあとに空白を入れてから囲んだ場合も、同じく項目が多くなります。 2つの見分け方は、後の「カンマのあとの空白で、囲みが効かなくなる」で説明します。
引用符が消えて、セルの後ろに残る
囲んだセルの中の " を重ね忘れた形です。
名前,メモ
山田,"商品名は"特選"です"
確かめた2つの読み取りでは、メモは 商品名は特選"です" になりました。
2つ目の " で囲みが閉じ、残りの文字がそのまま後ろにつながるためです。
この形になったら、囲みの中の " の重ね忘れを疑えます。
Python の csv モジュールで、決まりに厳しい読み方(strict=True)にすると、エラーで止まります。
途中から後ろが、全部1つのセルになる
囲みを開いたまま閉じ忘れた形です。
名前,メモ
山田,"閉じ忘れ
佐藤,次の行
閉じの " が来るまで、改行もカンマもセルの中身として読まれます。
この例では「佐藤,次の行」までが、山田さんのメモになります。
CSV⇔JSON変換ツールでは、この形は「クォートが閉じられていないフィールドがあります」というエラーになります。 Python の csv モジュールは、既定の読み方では最後まで1つのセルとして読み、エラーにしませんでした。
カンマのあとの空白で、囲みが効かなくなる
見落としやすいのが、区切りのカンマのあとに空白を入れてから囲む書き方です。
名前,住所
山田, "東京都港区1-2-3, 2階"
RFC 4180 では、空白もセルの中身の一部として扱います。
この行の2つ目のセルは空白から始まるので、" は囲みではなく、ただの文字になります。
確かめた2つの読み取りでは、どちらも次の3項目に分かれました。
- 「山田」
- 先頭に空白が付いた
"東京都港区1-2-3 - 先頭に空白が付いた
2階"
セルの中に " が文字として残っているなら、この形を疑えます。
囲み忘れた場合は、" はどこにも出てきません。
改行を含むセルがあると、行数と件数が合わない
囲んだセルの中の改行は、行の区切りではありません。 そのため、ファイルを行で数えた数と、データの件数が食い違います。
最初の例のCSVは、ファイルとしては4行あります。 データとして読むと、見出しと2件の計3行です。
テキストエディタで4行目に見える「佐藤,…」は、データとしては3行目です。 行番号を頼りに探すと、別のデータに当たることがあります。 件数で確かめたいときは、JSONに変えて何件目かで見るほうが確実です。
改行を含むセルが、名簿の差し込みを崩す例もあります。 詳しくは 差し込みで名前が置き換わらない原因 にまとめました。
手で囲むより、書き出す側に任せる
囲みや "" を手で書き足すと、どこかで重ね忘れが起きやすくなります。
データがJSONで手元にあるなら、CSVへの書き出しに任せる方法もあります。
CSV⇔JSON変換 の「JSON → CSV」は、カンマ・"・改行を含むセルだけを自動で囲みます。
中の " も "" に重ねるので、上の例と同じ形のCSVが出てきます。
関連記事
- CSVをExcelで開くと文字化けする原因と直し方:囲みではなく文字コードが原因の崩れ
- CSVとJSONを相互変換する使い方|ExcelデータをAPIで使う形に:変換ツールの操作の手順
- Markdownの表の書き方|崩れる原因とセル内の改行・縦棒:CSVを記事の表に貼るときの決まり
まとめ
カンマ・改行・ダブルクォートを含むセルは、セル全体を " で囲みます。
囲みの中の " は、"" と2つ重ねます。
崩れたときは、項目が多いのか、" が後ろに残るのか、後ろがつながるのかを見ます。
セルの中に " が文字で残っていたら、カンマのあとの空白も疑ってください。
参考・出典
- RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Files — IETF (2026-10-23 閲覧)
- csv — CSV File Reading and Writing — Python Software Foundation (2026-10-23 閲覧)
本記事は上記の公的機関・公式情報源を参考にしています。最新の情報は各リンク先をご確認ください。
あわせて読みたい
同じテーマ・関連ツールの記事です。