
いつもお世話になります。
下記CSVデータの場合の分割された結果を示していますが、データを分割する際、一般的には、
どのような考え方で分割するロジックを組めばよいでしょうか。
CSVファイル読み込み、書き込み時におけるルール。
(間違っている、漏れているなどありましたらご指摘頂ければと思います。)
・ダブルコーテーションで括る必要のあるデータ
以下のデータを含むデータ。
区切り文字、改行、ダブルコーテーション
・ダブルコーテーションが入るデータは、ダブルコーテーションでエスケープする
aa"bb ⇒ aa""bb
上記ルールに則ったCSVファイルの読み込み方。
123,aaaaa,ああいい,"13,55","aa""bb","ab(改行)ZZ","ああ"",いい"
↓
データ1 123
データ2 aaaaa
データ3 ああいい
データ4 13,55
データ5 aa"bb
データ6 ab(改行)ZZ
データ7 ああ",いい
上記結果になるようにデータを分割すればいいのですが、データにダブルコーテーションがある
場合、書き込み時に付与、読み込み時に削除、という具合にデータの編集処理が入ってしまうが
いいのか、何かのミスで、ダブルコーテーションがエスケープされておらず、カンマと連続で
定義されていた場合「",」、データの終わりを示してしまい、意図しない個所で分割されてしまうの
ではないか、何かのミスでダブルコーテーションの始め、もしくは終わりの定義が漏れいた場合
(「・・・,"aaaa,・・・」「・・・,aaaa",・・・」など)、これも意図しない個所で分割されてしまう、
などなど、一般的にはどのようなロジックにしておけばよいのでしょうか。
そもそもロジックで全てを防ぐ事はできない、ということでしたら、事前にこれだけは決めておくべき、
というポイントがありましたら、教えて頂けると嬉しいです。
世の中には、CSVファイルを分割するためのライブラリなどが公開されていますが、
外部のライブラリを使用してはいけないプロジェクトの場合など、自分で自作する必要があります。
その際の一般的な考え方、注意点などを踏まえて作ることができれば、無用なバグを含ませる
ことができずにすむので、皆様の考えを教えて頂きたいと思い、質問した次第です。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
それで問題はない。
逆に聞きたい。
余計なダブルコーテーションが入った時(またはダブルコーテーションが不足した時)どうしたいのか?
データを解析して、余計なダブルコーテーションを自動削除(または不足するダブルコーテーションを自動追加)して読み込めるようにしたいのか?
普通はそこまでの面倒は見ません。
単純にデータエラーにします。(またはデータがずれたまま読みこまれる)
CSVファイルなので、改行位置で分割したほうが都合が良いと思います。
回答ありがとうございます。
> 普通はそこまでの面倒は見ません。
> 単純にデータエラーにします。(またはデータがずれたまま読みこまれる)
考えすぎということですね。ありがとうございます。
> CSVファイルなので、改行位置で分割したほうが都合が良いと思います。
これはどういう意味なのでしょうか?
改行コードが入っていても、ダブルコーテーションが入っている場合は一つのデータとみなすという
認識でいるのですが、改行部分で問答無用で次のレコードにした方がよい、とおっしゃっているのでしょうか?
No.2
- 回答日時:
CSVファイルの大前提として、データは行単位になっているということです。
ファイルを分割するときに、データの行単位で分割したほうが良いということです。
単純に文字数だけ見て、行の途中で分割したら、分割されたファイルをテキストエディタで見たときにわかりにくくなる。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
ウィンドウ枠の固定を行の2箇所...
-
SetCurrentPositionに秒数を指定
-
メモ帳(テキストデータ)をExc...
-
配列の勉強をしています。使用...
-
GETはできるがPOSTができない、...
-
1列で複数行のソート後のデー...
-
平均値の計算の仕方は?
-
Googleスプレッドシートで、一...
-
UCLとLCLってなんですか?予備...
-
GridViewの行の一部を複数行にする
-
ExcelVBAでデータ不一致のもの...
-
[C言語] コメント文字列を無視...
-
マクロで同じフォルダにある画...
-
【VBA】データを入力後に,同一...
-
配列数式の解除
-
数式は残し値をクリアするマク...
-
Libre office マクロ
-
マクロを組んで作業するのは実...
-
特定のPCだけ動作しないVBAマク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
この行は既に別のテーブルに属...
-
多量のSUMIF式を軽くしたい
-
配列でデータが入っている要素...
-
EXCELVBAでSQLserverからデータ...
-
エクセルで2つの時系列のデー...
-
ACCESS VBA インデックスが有効...
-
二分探索の平均探索回数
-
Accessで該当データにフラグを...
-
ビットシフトについて
-
Rails4 Redirect_Toで送信
-
CString型の文字列連結について
-
[C言語] コメント文字列を無視...
-
ブレーカー落ちで壊れたりしな...
-
ActiveReportについて
-
バーコードリーダーの読込デー...
-
C# でDataTableの更新を高速化...
-
プログラミング python pandas ...
おすすめ情報