@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

CSVファイルの読込処理について

投稿者投稿内容
元イノキイズム
常連さん
会議室デビュー日: 2005/12/05
投稿数: 24
投稿日時: 2006-01-10 15:10
お世話になります。
イノキイズムと申します。

CSVファイルの読込処理にて項目そのものに
カンマが含まれている場合の対象方法がわからず困っています。
皆さまはこのような場合どのように対処されておられるのでしょうか?

ご教授お願い致します。

※開発言語はC#です。

以上、宜しくお願いします。
ホッピー
会議室デビュー日: 2006/01/04
投稿数: 4
投稿日時: 2006-01-10 15:16
CSVファイルの区切り文字をカンマではなく、TABにすればよいのでは?
※いうまでもなく、項目内にTABが含まれないことが前提ですが
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2006-01-10 15:29
データは""でくくられてます?
その場合はちょん切られたものを復元するか、
またはTokenizerに頼らず、1文字ずつ確認するか、
どちらかで対処できると思います。
元イノキイズム
常連さん
会議室デビュー日: 2005/12/05
投稿数: 24
投稿日時: 2006-01-10 16:04
イノキイズムです。
ホッピー様、Edosson様ご回答ありがとうございました。

引用:

Edossonさんの書き込み (2006-01-10 15:29) より:
データは""でくくられてます?
その場合はちょん切られたものを復元するか、
またはTokenizerに頼らず、1文字ずつ確認するか、
どちらかで対処できると思います。


はい、データは""でくくられています。

「その場合はちょん切られたものを復元する、
または、1文字ずつ確認するか」と
ありますが、すみませんイメージがわきません。
※「このカンマは区切り文字のカンマで、このカンマは項目のカンマだよ」と
 判定する方法が思いつきません…。


ホッピー様にご提案頂きましたCSVファイルの区切り文字を
カンマ以外(TAB)にする方法ですが、できれば、
項目そのものに区切り文字が含まれいても対処できるような
プログラムにしたいと考えております。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-10 16:05
引用:

イノキイズムさんの書き込み (2006-01-10 15:10) より:

CSVファイルの読込処理にて項目そのものに
カンマが含まれている場合の対象方法がわからず困っています。
皆さまはこのような場合どのように対処されておられるのでしょうか?


カンマは文字列ですよね?
文字列は二重引用符で囲みます。

TSV でも OK なんでしょうけど、データ型は意識するべきだと思うからです。
どのみち今度はタブを表現する術が必要になった場合に困りますし...

二重引用符自体を表現する場合は、エスケープします。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-10 16:19
引用:

イノキイズムさんの書き込み (2006-01-10 16:04) より:

はい、データは""でくくられています。


つまり、二重引用符で括られた項目を 1 つのデータだと認識できているわけですね。
解決してるじゃないですか?

引用:

※「このカンマは区切り文字のカンマで、このカンマは項目のカンマだよ」と
 判定する方法が思いつきません…。


なので、何故この状況になっているのかが判りません。
二重引用符に囲まれていないカンマは、区切り文字。
二重引用符に囲まれたカンマは、文字列ですよね?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ホッピー
会議室デビュー日: 2006/01/04
投稿数: 4
投稿日時: 2006-01-10 16:35
>イノキイズムさん
念のため確認したいのですが、
取り扱うcsvファイルは 文字列のみ”でくくって、数値はくくらない、
といった構造にはなってませんよね?
元イノキイズム
常連さん
会議室デビュー日: 2005/12/05
投稿数: 24
投稿日時: 2006-01-10 16:50
イノキイズムです。
じゃんぬねっと様、ホッピー様ご回答ありがとうございました。

引用:

じゃんぬねっとさんの書き込み (2006-01-10 16:19) より:
引用:

※「このカンマは区切り文字のカンマで、このカンマは項目のカンマだよ」と
 判定する方法が思いつきません…。


なので、何故この状況になっているのかが判りません。
二重引用符に囲まれていないカンマは、区切り文字。
二重引用符に囲まれたカンマは、文字列ですよね?




申し訳ありません。言葉足らずでした。
CSVの項目そのものに二重引用符が含まれていることが
有り得ることを想定しております。

引用:

ホッピーさんの書き込み (2006-01-10 16:35) より:
>イノキイズムさん
念のため確認したいのですが、
取り扱うcsvファイルは 文字列のみ”でくくって、数値はくくらない、
といった構造にはなってませんよね?


いえ、なっております。
データは文字列のみ二重引用符でくくり、数値に関しては
くくらないという構造をとっております。

スキルアップ/キャリアアップ(JOB@IT)