web-dev-qa-db-ja.com

CSVファイルにコメントを付けることはできますか?

CSV形式のファイルでコメントを許可するための公式の方法はありますか、それ自体の行の最後にORがありますか?

私は wikipediaRFC 418 をチェックしようとしましたが、どちらもファイル形式の一部ではないと信じるようなことは何も言及していないので、それは不運であり、次に、ファイルを説明するために別のReadMe.txtファイルを使用する必要があります。

最後に、自分のコメントを簡単に追加できることはわかっていますが、Excelのようなものがすぐにインポートでき、消費者がインポートプロセスをカスタマイズする必要がないことを望んでいました。

だから、考え?

184
Pure.Krome

CSVの「標準」(など)は、コメントの処理方法を規定していません。いや、慣習を確立してそれを守るのはアプリケーション次第です。

107
skaffman

いいえ、CSVはコメントにタグを付ける方法を指定していません。Excelなどのプログラムによって、テキストを含む追加のセルとして読み込まれます。

(Excelなどの特定のアプリケーションにインポートされるCSVを使用して)管理できる最も近い方法は、Excelが無視するコメントにタグを付ける特別な方法を定義することです。 Excelの場合、コメントを数式に埋め込むことで、コメントを(ある程度まで)非表示にすることができます。たとえば、次のcsvファイルをExcelにインポートしてみてください。

=N("This is a comment and will appear as a simple zero value in Excel")
John, Doe, 24

それでも、スプレッドシートのセルには数字の0が表示されますが、コメントは非表示になっています。

または、テキストを空白で埋めてセルの表示部分に表示されないようにして、テキストを非表示にすることもできます。

                              This is a sort-of hidden comment!,
John, Doe, 24

Excelが次のセルを埋め、セルに収まらないテキストの部分を隠すために、コメントテキストの後にコンマを付ける必要があることに注意してください。

厄介なハックは、Excelでのみ機能しますが、インポート後に出力を少しきれいにするのに十分な場合があります。

27
Jason Williams

エンジニアリングデータでは、最初の列に#シンボルが表示されてコメントを通知するのが一般的です。

ostermiller CSV解析ライブラリ を使用して、このようなファイルを読み取り、処理します。そのライブラリを使用すると、コメント文字を設定できます。解析操作の後、実際のデータのみを含む配列を取得しますが、コメントはありません。

26
Pedro_Uno

CSVファイルにコメントを追加する最良の方法は、データに「コメント」フィールドまたはレコードを追加することだと思います。

私が使用したほとんどのCSV解析アプリケーションは、フィールドマッピングとレコード選択の両方を実装しています。そのため、フィールドのプロパティについてコメントするには、フィールドの説明だけのためにレコードを追加します。レコードにコメントするには、コメントの最後にフィールド(実際にはすべてのレコード)を追加します。

これらは、CSVファイルにコメントするために考えられる2つの理由です。しかし、私が予見できる唯一の問題は、1つのレコードがいくつかの検証ルールをパスしない場合、ファイルをまったく受け入れることを拒否するプログラムです。その場合、数値フィールドの文字列タイプのフィールド記述レコードの作成に問題が生じます。

しかし、私は決して専門家ではないので、私の理論の誤りを指摘してください。

6
Tyler Wayne

カンマ区切りファイルは、実際には行がコンマで区切られた値で構成される単なるテキストファイルです。

CSVファイルの内容を定義する標準はないため、コメントを示す定義された方法はありません。 CSVファイルをインポートするプログラムによって異なります。

もちろん、これは通常Excelです。 Excelでコメントをどのように定義するかを自問する必要がありますか?言い換えると、CSVファイル内の行(または行の一部)をExcelが無視する理由は何ですか?私はこれを行うことを何も知らない。

3
pavium

バッチファイルでFORコマンドを使用してファイルを解析している場合、セミコロンが機能します(;)

REM test.bat contents

for /F "tokens=1-3 delims=," %%a in (test.csv) do @Echo %%a, %%b, %%c

;test.csv contents (this line is a comment)

;1,ignore this line,no it shouldn't

2,parse this line,yes it should!

;3,ignore this line,no it shouldn't

4,parse this line,yes it should!

出力:

2, parse this line, yes it should!

4, parse this line, yes it should!
3
Ken Bob Saxton

次のようなものが必要な場合:

  │ A                              │ B
──┼────────────────────────────────┼───
1 │ #My comment, something else    │
2 │ 1                              │ 2

CSVには次の行が含まれる場合があります。

"#My comment, something else"
1,2

最初の行の「引用符」に注意してください。

Excelウィザードを使用してテキストを列に変換するときは、「連続する区切り文字を1つとして扱う」をチェックし、区切り文字として「引用符」を使用するように設定してください。

したがって、Excelはテキストをコンマで分割し、 'comment'行を単一の列値として保持します(引用符は削除されます)。

2
Rogerio Granato