CSVに追加できる「sep =」メタデータとは何ですか?


24

スペイン語のPC(顧客のもの)でExcelでCSVを正しく開く方法を見つけようとしていたときsep=,に、ファイルの上部での使用を推奨する多くの回答が見つかりました。

一見したところ、このアプローチは機能しますが、これらの回答のいずれもこのメタデータオプションがどこから来たのかについてのさらなる情報を提供しません。私はそれが意味するものを検索しようとしました(したがって、それらの答えをすべて見つけました)。

私の主な懸念は、これがExcel固有の機能かどうかです。疑わしいが、それを確認する決定的なものは何もない。

関連する質問は次のとおりです。

  • この設定で使用できる文字は何ですか?
  • 他にどのような設定が利用可能か(例:行終了文字、引用文字など)。
  • この機能を公式にサポートする他のツールはありますか?

誰かが私にそれを指し示すことができるドキュメンテーションがどこかにあり、これらの質問すべてに答えることを望んでいます。見つけられませんでした。

いくつかの明確化:

sep=パーサへのパラメータではありません。CSV に配置することを意図しています。例:

sep=|
"LETTER"|"ANIMAL"
"a"|"aardvark"
"b"|"bear"
"c"|"cow"

4
はい、これはExcel固有です。
レイスタファリアン

2
これで何か得られましたか?私は同じ質問に困惑しており、この機能を説明するMS仕様をまだ見つけていません。この機能がMSによって文書化されていない場合、そもそもどのように機能しましたか?
幼児menot

@toddlermenot残念ながらありません。私が得るのは、それがExcel特有であると主張する人々であり、その主張を裏付けるものは何もありません。
ブルハンアリ

回答:


7

RFC 4180は一般にCSV形式の標準として認識されており、そのような機能については言及していません。

Web上の表形式データおよびメタデータの W3C モデルは、それを範囲外の機能として言及しています。

多くの「CSV」ファイルには、たとえばCSVドキュメントのヘッダー行の前の行にメタデータが埋め込まれています。この仕様では、ヘッダー行の列の名前を除き、CSVファイル内にメタデータを埋め込むための形式は定義されていません。

そのため、この機能がExcel固有であることの直接的な証拠は見つかりませんでしたが、その機能をカバーする標準化文書はないようですので、これは明らかに事実です。


良い調達。私が言いたいことの一つは、sep = | Excelで使用するセパレーターをパイプ文字( '|')として定義します。広く使用されていませんが、Excel専用ではありません。これはセパレーターディレクティブです。Excel iircの国際バージョンには異なる文字があります。たとえば、Excelを実行しているマシンのヨーロッパ言語ではセミコロンが使用されます。
var firstName

1
私はその使用法を知っています(おそらく私の答えからは完全には明らかではありませんでした)。Excelがその機能を導入し、あらゆる種類の(パブリック)標準に基づいているように思われることを指摘していました。
ステファンKögl17年


-1

命令sep =は、イタリアのように、コンマが小数点区切り文字として使用されるすべての国で使用されます。これらの国ではExcelはコンマではなくセミコロンを使用してCSVをエクスポートするため、ファイルを米国または他の国で確実に読み取れるようにする場合は、

sep =;

ファイルの上。これはExcel固有であり、他のアプリケーションでは無視される場合があります。


-2

.csvファイルからインポートできるツールのほとんどは、コンマだけが可能な区切り文字ではないことを認識しています。たとえば、タブは長い間一般的でした。これはパンチカードの時代にさかのぼり、データフィールドの終わりとして認識される文字が必要であると思います-ほぼすべてのシステムがこれを必要とする固定幅フィールドまたは長さプレフィックスフィールドを使用するシステムを除きますコンピューターの出現以来。

3つの基本要素はフィールドセパレーター、レコードセパレーター、データマーカーの終わりです。csv ではデフォルトでそれぞれカンマ、改行、ファイルの終わりを使用しますが、ほぼすべての有効な入力を使用できますが、メカニズムが必要です有効なデータ内で発生した場合に特別なマーカーをエスケープするため。

私が出会ったある歴史的なシステムは、フィールドの終わりに改行を使用し、レコード*!*!* END *!*!*の終わりとデータの終わりに2つの空白行を使用しました。私は一般,\t|:に、さまざまな制御文字とともにフィールドセパレータとして使用されるすべてに出くわしました。

警戒すべきことの1つは、フランス人などが小数点としてカンマを使用していることです。これは、あらゆる種類の楽しみやゲームを引き起こす可能性があります。rfc4180の csvファイルにはある程度の標準化がありますが、あるプログラムからエクスポートして別のプログラムにインポートするときにファイルを手動で編集する必要がある場合があります。

たとえば、Pythonの質問の2番目の部分に答えるために、次のオプションを提供する標準ライブラリの1つとしてcsvリーダー/ライターが含まれています。

  • delimiter-これはフィールドセパレータです(エスケープされていない場合)。
  • doublequote-trueの場合、フィールド" は次のように表されます""
  • escapechar-後続の文字から特別な意味を削除します。たとえば、設定されている\場合、引用符は次のように表すことができます\"
  • lineterminator-通常の1 \n\r\r\nまたは\n\r
  • quotechar-文字列を引用するために使用される文字、通常"または'
  • quoting -次のいずれかのフラグ
    • ALL -すべてのフィールドは引用符で囲まれています。つまり: "1","Free Beer","ASAP"
    • MINIMAL -特殊文字を含むフィールドのみを引用します。例: 1,"Beer, (Free)", Now, Please
    • QUOTE_NONNUMERIC -数字ではないものはすべて引用してください。例: 1,"Beer, (Free)", "Now", "Please"
    • NONE -代わりにエスケープを引用しないでください、すなわち: 1,Beer\, (Free), Now, Please
  • skipinitialspace-各フィールドの先頭のスペースをスキップして、フィールドセパレータとして, だけでなく使用できるようにします,

一般的に、csvファイルをインポートできる柔軟で熟考されたツールは、これらのオプション(名前やメカニズムが異なる場合があります)の方が多くなります。


2
これは私の質問に答えません。それはCSVが何であるかを説明します。私の質問は、特定の構文についてです。物事を明確にするために質問に追加できる背景はありますか?
バーハンアリ14

1
ありがとう、それでも助けにはならない。sep=パーサーのパラメーターではありません。私の質問にいくつかの説明を追加しました。
バーハンアリ14

1
@SteveBarnesしかし、あなたが言及したPythonライブラリなどのツールは、ファイルのコンテンツの一部としてオプションを許可しますか?それが問題の主なポイントだと思います。
ランディオリソン14年

1
「彼らは多くの優れた奇妙さの1つだから」でも?それは私が解決しようとしていることの一部です。CSVが何であるか知りたくありません。CSVの解析方法を知りたくありません。何sep=がどこから来たのか知りたい。
バーハン・アリ

1
sep =は、Microsoft Excel固有のヒントメソッドであり、Microsoft以外の仕様では説明されていません。それはマイクロソフトの一部から来ています。
スティーブバーンズ14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.