CSVファイルについて



 ◇-?CSVファイルについて-yeye-11/24-11:28(203)-No.383197
   ┗?!Re:CSVファイルについて...-jtaka[BJCB]-11/24-14:36(200)-No.383222
     ┗?!!Re:CSVファイルについて...-yeye-11/27-15:02(127)-No.383678
       ┣?!!!Re:CSVファイルについて...-jtaka[BJCB]-11/27-15:24(127)-No.383680
       ┃ ┗?!!!!Re:CSVファイルについて...-yeye-11/27-15:41(127)-No.383685
       ┃   ┣?!!!!~Re:CSVファイルについて...-jtaka[BJCB]-11/27-16:02(126)-No.383687
       ┃   ┗?!!!!!Re:CSVファイルについて...-みなも-11/27-16:54(125)-No.383691
       ┃     ┗?!!!!!!Re:CSVファイルについて...-yeye-11/28-13:04(105)-No.383831
       ┃       ┗?!!!!!!!Re:CSVファイルについて...-みなも-11/28-16:44(102)-No.383865
       ┃         ┗?!!!!!!!!Re:CSVファイルについて...-ZONE-11/29-10:07(84)-No.383985
       ┃           ┗?!!!!!!!!!Re:CSVファイルについて...-みなも-11/29-13:29(81)-No.384024
       ┃             ┗?!!!!!!!!!!Re:CSVファイルについ...-ZONE-11/29-14:59(79)-No.384041
       ┗?!!!Re:CSVファイルについて...-shintok-11/29-00:05(94)-No.383943
         ┗?!!!!Re:CSVファイルについて...-みなも-11/29-13:34(81)-No.384025
           ┗?!!!!!Re:CSVファイルについて...-shintok-11/29-16:27(78)-No.384047

▲このページのトップに戻る
383197CSVファイルについてyeye 2006/11/24-11:28

メーカー名:富士通
OS名:WindowsXp Professional
パソコン名:FMV-820MT
ハード関連: CSVファイルについて
ソフト関連: CSVファイルについて
使用回線:ADSL
--
こんにちは

VB利用して、AccessのテーブルデータをCSVファイルにエクスポートしたが、データフィールドに""が付いています。
""付かないようなエクスポート方法を教えてもらえないでしょうか?

宜しくお願いします。

▲このページのトップに戻る
383222Re:CSVファイルについてjtaka[BJCB] 2006/11/24-14:36

記事番号383197へのコメント
文字列データとして扱われているものをはき出すときはダブルクォーテーションで
括るのが自然だと思うんだけど。問題も発生しにくいだろうし。数値データも
クォートした方が0埋めとかの付帯情報をつけるのに役立ちそうだし。

というか、ダブルクォーテーションがつくとなんか問題でもあるんですか?

▲このページのトップに戻る
383678Re:CSVファイルについてyeye 2006/11/27-15:02

記事番号383222へのコメント
jtaka[BJCB]さんは No.383222「Re:CSVファイルについて」で書きました。

ご返事をありがとうございました。
このCSVファイルのデータをプログラム組んでウェッブ上に表示するのですが、""付くと見た目が悪いので、除きたいです。
何か良い方法無いかを教えて頂きたいです。
宜しくお願いします。

▲このページのトップに戻る
383680Re:CSVファイルについてjtaka[BJCB] 2006/11/27-15:24

記事番号383678へのコメント
>このCSVファイルのデータをプログラム組んでウェッブ上に表示するのですが、
そのプログラムの中でダブルクォーテーションを除去するようにする処理を
おこなったらどうなのですか?

CSVファイルはあくまで情報交換のためのファイル形式で、表示のためのものでは
ないと思います。表示はアプリケーションの仕事だと思います。

▲このページのトップに戻る
383685Re:CSVファイルについてyeye 2006/11/27-15:41

記事番号383680へのコメント
jtaka[BJCB]さんは No.383680「Re:CSVファイルについて」で書きました。

アドバイスをありがとうございました。
パールで組んだプログラムですが、""を除去する為、どのように編集するかを教えていただければと思います。

▲このページのトップに戻る
383687Re:CSVファイルについてjtaka[BJCB] 2006/11/27-16:02

記事番号383685へのコメント
それぐらい自分で考えろ!というのは酷ですか?

正味の話、Perlは使ったことがないのでおいらには無理ですが。

MSBasic7.1とかBorlandC++とかでバイト列の読み込みと編集をおこなうプログラムは
書いたことはありますが、1byteごとに読み出しつつダブルクォートに出会ったら
破棄するとか、バッファに入ったものをスキャンして破棄するぐらいのことで
十分だと思うんですが。

▲このページのトップに戻る
383691Re:CSVファイルについてみなも 2006/11/27-16:54

記事番号383685へのコメント
yeyeさんは No.383685「Re:CSVファイルについて」で書きました。
text = "," text + ","

 OUTPUT_TEXT  文字列 
textdata()  文字列
 スタート位置 数字型
 終了位置   数字型

j=0

for i =1 to maxsize
 if 二文字 = ",""  ([,"]を見つけるぞ、ここが文字の開始位置だ)
(文字始まり)
    スタート位置を保持
  else if 二文字 = ""," ([",]を見つけるぞ、ここまで文字だ)   
(文字終わり)
    終了位置を保持
    配列を確保するぞ
    textdata(j) = 開始位置と終了位置から配列に入れるぞ!
    j++ 
  end if
next

for j=0 to (textdataの配列)
  ダブルクオーテションをハズすぞ!
  if textdata(j) =""""
    (CSVのフィールドが空だ)
    textdata(j)=""
  else
    (両端の一文字[これ→"ね]以外は要らないよね?)
    textdata(j) = textdata(j)の両端一文字削る  
  ene if
  (CSVに戻すぞ)
  OUTPUT_TEXT=OUTPUT_TEXT+ textdata(j) + ","  
next 

こんなんで駄目?

▲このページのトップに戻る
383831Re:CSVファイルについてyeye 2006/11/28-13:04

記事番号383691へのコメント
みなもさんは No.383691「Re:CSVファイルについて」で書きました。

詳しいプログラムをありがとうございます。パールに組んでやってみます。

因みに、

  if textdata(j) =""""
    (CSVのフィールドが空だ)
    textdata(j)=""
  else

なんですが、フィールドの値が""の場合、空にすることですか?

▲このページのトップに戻る
383865Re:CSVファイルについてみなも 2006/11/28-16:44

記事番号383831へのコメント
yeyeさんは No.383831「Re:CSVファイルについて」で書きました。

>なんですが、フィールドの値が""の場合、空にすることですか?
そーです、文字列の ["]を取りたい訳なんですから
手っ取り早く空のデータを突っ込んで、[""]を消してる訳なんです

フィールドが空な場合でもCSVでは[""]と入っている場合ですね
 例1)
  "りんご","みかん","ぶどう","","もも"
  ココでは 3番目の配列ですね
 
 付け加えるなら フィールドが空な場合は["]が付かない場合の処理も
  有った方が良いかもですね
 例2)
  "りんご","みかん","ぶどう",,"もも"

  if textdata(j) =""""  
    (CSVのフィールドが空 例1のパターン)
    textdata(j)=""
   else if textdata(j) =""
(CSVのフィールドが空 例2のパターン)
    なにもしないよ
  else
    両端削除〜
   end

 無論 ifを使わず "" は "ほにゃらら〜" 
 を同じ処理してもらっても構いませんよ 

   



▲このページのトップに戻る
383985Re:CSVファイルについてZONE 2006/11/29-10:07

記事番号383865へのコメント
「"」で囲まれたフィールドに「"」が実データとして含まれている場合の対処も必要です。
「"」に「"」が補われ「""」となります。
「"3.5""FD"」→「3.5"FD」

▲このページのトップに戻る
384024Re:CSVファイルについてみなも 2006/11/29-13:29

記事番号383985へのコメント
ZONEさんは No.383985「Re:CSVファイルについて」で書きました。

確かに「"」「,」の文字は注意必要ですよね

でも、""で囲まれた中は必ず文字列とするという
意味じゃなかったでしたっけ?

ちょっと作ってみますね(汗)

「,」の文字は、CSVの"みかん,4個","りんご,10個"
も文字列になれば・・・

  Arry(0)=みかん,4個
  Arry(1)=りんご,10個


 最後にCSVに戻す時はNGでしょうけど・・・


 あー今見ると、区分け文字探す所上手くいきませんかな?

▲このページのトップに戻る
384041Re:CSVファイルについてZONE 2006/11/29-14:59

記事番号384024へのコメント
>確かに「"」「,」の文字は注意必要ですよね
>でも、""で囲まれた中は必ず文字列とするという
>意味じゃなかったでしたっけ?

基本的にはその通りなんですが、CSVファイルを作成するときの条件がありますので、
その条件に合わせて「"」を外す必要があります。

私が把握している条件は以下の通りです。
・文字列は必ずしも「"」で囲む必要は無い。
・文字列に「"」が含まれる場合は「"」を補い「""」とする。
 および全体を「"」で囲む。
・文字列に区切り文字(「,」とかTABとか)が含まれる場合は全体を「"」で囲む。

・ABCD → ABCD 又は "ABCD"
・AB"CD → "AB""CD"
・1,000 → "1,000"
データベースにCSVファイルでデータを渡すときに調べたものです。
ExcelでCSVファイルとしてセーブすると良く解ります。
Excelの場合、セルに数字以外の文字が含まれると必ず「"」で囲まれます。

▲このページのトップに戻る
383943Re:CSVファイルについてshintok 2006/11/29-00:05

記事番号383678へのコメント
yeyeさんは No.383678「Re:CSVファイルについて」で書きました。
>""付くと見た目が悪いので、除きたいです。

単に " をとるだけのワンライナー

perl -pe 'tr/\"//d' < 入力ファイル >出力ファイル

▲このページのトップに戻る
384025Re:CSVファイルについてみなも 2006/11/29-13:34

記事番号383943へのコメント
shintokさんは No.383943「Re:CSVファイルについて」で書きました。

perlじゃ無いんですが
それ、最初に考えました

でも、「"」を意図して入れていた場合も置換されません?

▲このページのトップに戻る
384047Re:CSVファイルについてshintok 2006/11/29-16:27

記事番号384025へのコメント
みなもさんは No.384025「Re:CSVファイルについて」で書きました。
>でも、「"」を意図して入れていた場合も置換されません?

その通りです。だから「単に " を取るだけ」です。

正規表現を使って, 行頭の「"」, 行末の「"」,「,」の前の「"」,
「,」の後ろの「"」に限定して削除するのは簡単ですが,
それでも例外の可能性はありますね。

A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言