• ベストアンサー

質問なんですが

1092344 1320089 4780677 56064←Xとする 123098 5670989 以上のデータが含まれているファイルAがあるとします。 上のデータに適する番号を持ったデータ(ここでは郵便番号に対する住所とします←全国の郵便番号ならびにそれに対応する住所が記載してあるデータファイルB)が存在していたら、7桁の場合はそのままで、5桁ならびに6桁では7桁のデータのうち該当するところがあれば(例としてXの場合、56064??でも良いですし、??56064でも良いですし、?56064?でもいいです)抜き出して表示させるようなプログラミングを作りたいんですがどうしたらいいんでしょうか? 初心者でして、わかりにくい質問のしかたですいません。

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

  • ベストアンサー
  • SE-1
  • ベストアンサー率57% (26/45)
回答No.3

# もし参考 URL にある KEN_ALL.CSV のようなフォーマットでしたら、以下のスクリプトで。 # ファイルAの名前を A.txt としてあります。 use strict; use warnings; open NUM, "< A.txt" or die "Could not open A.txt. $!"; my @nums = <NUM>; chomp $_ foreach @nums; close NUM; open DATA, "< KEN_ALL.CSV" or die "Could not open KEN_ALL.CSV. $!"; my @data = <DATA>; close DATA; open OUT, "> found.txt"; foreach my $num (@nums){ print OUT "---- $num ---\n\n"; foreach my $datum (@data){ $datum =~ /"(\d{7})"/; print OUT $datum if $1 =~ /$num/; } print OUT "\n\n"; } close OUT; __END__ cf.) KEN_ALL.CSV のフォーマット 13101,"102 ","1020072","トウキョウト","チヨダク","イイダバシ","東京都","千代田区","飯田橋",0,0,1,0,0,0 13101,"102 ","1020082","トウキョウト","チヨダク","イチバンチョウ","東京都","千代田区","一番町",0,0,0,0,0,0

参考URL:
http://www.post.japanpost.jp/zipcode/dl/kogaki.html

その他の回答 (2)

  • SE-1
  • ベストアンサー率57% (26/45)
回答No.2

# No.1 さんのおっしゃることごもっともでデータファイルBがどのような形式になっているか等の情報が必要ですが、 # ご参考まで。 use strict; # ---- From here --- # my @nums = ("4780677","56064","123098"); my @data = <DATA>; # ---- to here --- # foreach my $num (@nums){ foreach my $datum (@data){ print $datum if $datum =~ /^\d{0,2}$num/; } } __DATA__ 1092344 City A 1320089 City B 4780677 City C 0560640 City D 1230980 City E 5670989 City F __END__ 実際ファイルから番号と対応表を読み込む場合は # ---- From here --- # と # ---- to here --- # の間を以下のように。 open NUM, "< B.txt" or die "Could not open B.txt. $!"; my @num = <IN>; chomp $_ foreach @num; close NUM; open DATA, "< A.txt" or die "Could not open A.txt. $!"; my @data = <DATA>; close DATA;

noname#77845
noname#77845
回答No.1

どういう環境で、 どういう言語を使用して、 どういった物が作りたいのかが全く不明です。 データベースは使用可ですか? 言語はPerlでなくてはいけないのですか? 全国の住所と郵便番号の対比表が何件有るかご存じですか? 因みに、 「プログラミングを作る」 とは言いません。 プログラミングとは、プログラムを組む(作る)事を指しているからです。 「プログラムを作る」 なら正しい。 なぜ、上記の補足を要求するかというと、プログラミングの使い方も怪しいので、本当にPerlかどうかも判らないからです。 補足してください。

関連するQ&A