いつもお世話になります。
下記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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- Excel(エクセル) Excel Powerクエリーの質問、行数指定は可能でしょうか? 2 2022/08/22 12:54
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
S9タイプからXタイプにデータ...
-
メモ帳(テキストデータ)をExc...
-
この行は既に別のテーブルに属...
-
VBにおいてフォーム間の変数の...
-
VBA 空白セルを削除ではない方...
-
大学のゼミのレポートがムカつ...
-
エクセルで2つの時系列のデー...
-
[C言語] コメント文字列を無視...
-
VBAを使ってOutlookメール本文...
-
ユーザーフォームのテキストボ...
-
シーケンサにパソコンからアク...
-
C# でDataTableの更新を高速化...
-
EXCELVBAでSQLserverからデータ...
-
Excelのマクロでワードのテキス...
-
0が含まれる幾何平均が「#NUM!」
-
WEBサイトの構築。表示データと...
-
CString型の文字列連結について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
配列でデータが入っている要素...
-
多量のSUMIF式を軽くしたい
-
エクセルで2つの時系列のデー...
-
Excelのマクロでワードのテキス...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
VBAを使ってOutlookメール本文...
-
Accessで該当データにフラグを...
-
合計3TBのデータのハッシュ値を...
-
シーケンサにパソコンからアク...
-
S9タイプからXタイプにデータ...
-
カンマからスラッシュに
-
VBAでシートからコンボボックス...
-
VBA 毎日取得するデータを順番...
-
ビットシフトについて
-
ユーザーフォームのテキストボ...
-
EXCELVBAでSQLserverからデータ...
-
特定のデータの抽出方法を教え...
おすすめ情報