• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CSVファイルにあるメールアドレスの重複チェック)

CSVファイルの重複チェック

このQ&Aのポイント
  • CSVファイルに保存されているメールアドレスの重複チェックについて
  • Perl初心者がイベント登録とデータ集計のためにCSVファイルを使用する中で、重複チェックの必要性を感じています。
  • CSVファイルのメールアドレスを読み込み、重複をチェックする方法について分かりやすく教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

こんにちは、解決した? 評価中のプログラムはPerlなのかな?Perlでないのなら仕方ないけど。Perlなら、出力したCSVを再度読み込むよりも、評価プログラム自体のデータ変数を解析するのも手だと思うよ。下記は、ファイル'sample.csv'に、一行あたり"<名前>,<メアド>,<質問文>"の順にデータが格納されてる事を前提に話します。rush_2009さんの考えをなるべく素直にあらわしてみました。 ---------- ここから ---------- 01:  //===== Initialize ===== 02:  %occurrence=(); 03: 04:  //===== File open and read loop ===== 05:  open FH, "sample.csv"; 06:  while( $line = <FH> ) { 07:    ($name, $mail, $question) = split /\,/, $line; 08: 09:    //===== Check and branch ===== 10:    if( exists $occurrence{$mail} ) { 11:      print "'$mail' is already exsists.\n"; 12:    } 13:    else { 14:      print "$name,$mail,$question\n"; 15:      $occurrence{$mail}=1; 16:    } 17:  } ---------- ここまで ---------- 学校の宿題程度のスクリプトです。高効率化やデータ再利用などを考えた構成ではありませんが、参考にしてみてください。僕なら、もうちょっと用途に応じたデータベース変数を用意しますが、スクリプトや変数構成はそれだけ複雑になります。実際にプログラムを走らせてないので、つまんないバグがあるかもしれないですが、まあ、許してください。責任感なくて、ごめんね~(笑)。

rush_2009
質問者

お礼

MAGNAFIFTYさま、ご丁寧に有難うございます。 分かりやすい説明でなんとなく分かったのですが・・・ 仰るようにperlで書かれたデータ変数を解析をいましているところです。 またもう少し調べてからお聞きするかもしれませんが、 そのときにお時間の有るようでしたら宜しくお願いします。

その他の回答 (5)

回答No.6

あいたたた、・・・英語力ですね(笑 Perlのコメントって//だっけ?ブツブツブツ レス不要です。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

形はあってますが, おしむらくは英語が....>#4. '$mail' is already exists. は英語として間違ってまっせ. '$mail' has already appeared. あたりが適当かと. '$mail' already exists. でも意味は通りそうだけどちょっと変な感じ.

回答No.3

>>1-2 ヒント:昔のokwave 回答もしておくか。 こうすればいい。これは シーケンシャルサーチという高度なアルゴリズム sub check{  $flag = 0;  $target = 'mail\アットマークmailtest.jp';  $num = $#mail;  for($i=0$i<$num;$i++){   if(mail[$i] eq $target){    $flag = 1;   }  }  return $flag; }

rush_2009
質問者

お礼

JavaJavax2さま、 早速のご回答有難うございます。 未だよくは分かってはいないのですが、 試してみます。 有難うございます。

rush_2009
質問者

補足

JavaJavax2さま、お名前からすると これはJavaスクリプトなのですか? ちょっと思いつきなのですが、登録フォームのメールアドレスの 項目にJavaスクリプトを直接付けてデータベースから全文をみて検索するという方法ないのでしょうか? すみません、素人の思い付きです・・・

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

普通はハッシュでしょうねぇ. defined $counter{$mail_address} でハッシュ %counter のキーに $mail_address があるかどうかわかるので, あれば重複してるしなければ重複していない.

rush_2009
質問者

お礼

Tacosanさま、早速のご回答有難うございます。 連想配列の勉強をもう少ししないといけないですね。 有難うございます。

  • urakids
  • ベストアンサー率77% (7/9)
回答No.1

漠然としていて、よくわからないのですが、 メールだけを抜き出せるなら、 それをハッシュに突っ込みつつ、すでにハッシュに在るかどうかで 重複チェックは出来るんじゃないですね?

rush_2009
質問者

補足

urakidsさま、早速のご回答有難うございます。 CSVのデータは 2009/9/10 13:14,80910-13142516,home,page,a,a,男性,1,123-4567,長野県,1,045-123-1234,home1@suv.com,home@suv.com 2009/9/10 13:18,80910-13181011,home,page,a,a,男性,1,123-4567,長野県,1,045-123-1234,home2@suv.com,home@suv.com 2009/9/10 13:30,90910-13303910,home,page,a,a,男性,1,123-4567,長野県,1,045-123-1234,home3@suv.com,home@suv.com こんな感じのデータでそこからメールアドレスを抜き出せば簡単なのかなと考えました、 もう少し勉強してみます。 有難うございます。

関連するQ&A