- - PR -
改行コードを含んだCSVファイルの読み込みについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-16 16:16
正規表現を使って楽にできたりしますかね。
(というかどこかに載ってないかな) RFCにあったんだ、と思ったら最近公開されたんですね。 それでも「CSVの仔細な解説となる公式な仕様は、存在しない」と書いてありますね。 The last field in the record must not be followed by a comma これは私も、最後のフィールドの後にカンマがあってはいけないということで ↓これはアリな気がしています。 aaa,bbb,ccc, ddd,xxx,yyy,zzz | ||||||||
|
投稿日時: 2006-07-17 11:44
ここだと、Jubeiさんがコードを載せてくれていたような気がする。:
わんくま同盟の宣伝をすると、 http://naka.wankuma.com/site/library/dotnet1.1/ こんなところにあったりする。 追加: なんにしても、 レコードの区切りが不明で、 かつ、 レコード中に(フィールドの区切りである)改行が含まれているのなら、 フィールド定義が間違っているのか、 レコード中の改行なのかの判別がつけられず、 読み込むためにはどちらかの判定を捨てなければならない、のではないでしょうか。 その辺は、「設計」で何とかするべき問題で、 コードで何とかする問題ではないでしょう。 [ メッセージ編集済み 編集者: Jitta 編集日時 2006-07-17 11:48 ] | ||||||||
|
投稿日時: 2006-07-18 10:39
同意。 たぶん独自のエスケープ文字を定義するでしょうね。(\n)とか。 サードパーティアプリケーションが絡むにしても、そのデータ作成に人間が絡むならそういう規約を作成するでしょう。 TSVって初めて聞いた。。。 「ふいんき」と一緒でCSVでいいんでない? A氏:入力ファイルはCSVです。 B氏:そうですか。で、区切り文字は? 普通の会話のような気がするが。。。 | ||||||||
|
投稿日時: 2006-07-18 10:45
区切り文字はカンマに決まってるだろう的人もいるのでやめた方がいいね。
TSVといいましょう。わからなければ「何それ?」って言ってくるだろうし。 http://e-words.jp/w/TSV.html | ||||||||
|
投稿日時: 2006-07-18 10:51
paniponi-xさん、お早うございます。
これが公認され、規定されているという事は知りませんでした(RFCで規定されているとは…ISOとか、あるいはIEEEとかそっち方面かと思った)。 そういうわけで、私の発言は誤りでしたね。 根拠となる文書を指し示す事は出来ませんが(元もと無いのかも)、CSVとは「項目がカンマで区切られ、レコードが改行で終端された」データ形式の事であると教わりました。その大前提が覆ってしまっては NG だろう、と考えたわけです。 それにしても例えば、こんな↓データをいきなりポロッと受け取ったら、どう解釈すべきなんだろう…。
| ||||||||
|
投稿日時: 2006-07-18 10:58
123, "ABC[改行]456,DEF[改行]789,GHI" の2カラムだろうねw | ||||||||
|
投稿日時: 2006-07-18 10:58
すべての実装者が CSV と TSV を自動認識すべきとは思わないですけど、RFC にある次の文は大事だと思います。
原文>Implementors should "be conservative in what you do, 原文>be liberal in what you accept from others" (RFC 793 [8]) 原文>when processing CSV files. 訳文>各実装は、CSVの処理において、「自分が何かするときは保守的に。 訳文>他者を受け入れるときは革新的に」(RFC793[8])振舞うべきである。 TSV, CSV の違いなんてのを含む、「CSVとはなんぞや?」というのは、しばしば宗教論争じみてきてしまいますので、使い分けかなと思います。 ユーザと話す時は、誤解が広がらない程度に相手の用語に合わせてもいいと思いますし、仕様書ではきっちり書き分けないといけないでしょうしね。 | ||||||||
|
投稿日時: 2006-07-18 11:25
こんにちは。
なんか例によって(?)質問者が置いてきぼりになってしまっているようでちょ っと心配ではありますが、これはこれで有意義な議論になっているようで。 (バニラミントさん、見てますか?)
これに関してはぶさいくろうさんと同じ意見で、CSV でいいと言ってしまうと後々 「CSVって言うからカンマが区切りだと思ったんだよ!タブだなんて聞いてな いよ〜(ダチョウ倶楽部)」みたいなことになったりするので、曖昧な表記は避 けるべきかと。 曖昧な表記と言えば
これにはちょっと久しぶりに目からビーム…もとい目からうろこでした。忘れ かけていたことを思い出させてもらったというか 基本は仕様書に明示的に書いておいて、それ以外は無保証だけど読めるかも しれないよ?ぐらいな対応がいいのかも。 とりあえず質問者さんは、事前に CSV ファイルの調査を念入りに行っておく べきだったかもしれません(それが出来ない場合も多々あるわけですけど)。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 |