OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

住所から市町村名などを切り出す

  • 暇なときにでも
  • 質問No.4909
  • 閲覧数616
  • ありがとう数14
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 8% (6/71)

県名から始まったり、県は省略されて市名からはじまったりと、バラバラの住所データから、都道府県名が何で市町村名は何で区は何で残りの住所は何で─というようなものを取り出したいのですが、うまい方法はありませんでしょうか。
東京の場合は2番目に区が来るとか、町はどの階層に入れるのかとか、そういった細かい事は考えなくても良い内容です。
下記のプログラムでは駄目でした。切り出せない上に文字化けします。どうしてでしょう。(東京を別にしているのは京都対策です。)
if ($juusho=~tr/^(東京都)//d)
{$todoufuken=$1;}
elsif($juusho=~tr/^(.+?[県府道])//d)
{$todoufuken=$1;}
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全4件)

  • 回答No.1

 「都」や「区」「町」などの文字が間違いなく入力されているという条件かでならば、それらの文字を使って切り分けることができます。  しかし、もしそうでないのなら、基本的に不可能だと思った方がいいでしょう。  よっぽど巨大なデータベースを作らない限り。
 「都」や「区」「町」などの文字が間違いなく入力されているという条件かでならば、それらの文字を使って切り分けることができます。
 しかし、もしそうでないのなら、基本的に不可能だと思った方がいいでしょう。
 よっぽど巨大なデータベースを作らない限り。
  • 回答No.2
レベル8

ベストアンサー率 38% (24/62)

Perlのバージョンと使用している文字コードにもよりますが、 [県府道]は1バイト単位でマッチする可能性がありますので(つまり[県府道]は6文字の文字列と解釈される) (県|府|道)にしてみてはどうでしょうか あとは漢字コードがSJISの場合は変なことが起こるかもしれません。
Perlのバージョンと使用している文字コードにもよりますが、
[県府道]は1バイト単位でマッチする可能性がありますので(つまり[県府道]は6文字の文字列と解釈される)
(県|府|道)にしてみてはどうでしょうか
あとは漢字コードがSJISの場合は変なことが起こるかもしれません。
  • 回答No.3
レベル13

ベストアンサー率 46% (643/1383)

現在市区町村は、全3368個あります。 この程度であれば、別途、市区町村名ファイルを作って、マッチング処理をさせてもいいんじゃないかと思います。 「郵便ホームページ」(下記URL)で、7桁郵便番号の一覧が手に入るので、それを加工すれば、市区町村の一覧が手に入ります。 ...続きを読む
現在市区町村は、全3368個あります。
この程度であれば、別途、市区町村名ファイルを作って、マッチング処理をさせてもいいんじゃないかと思います。

「郵便ホームページ」(下記URL)で、7桁郵便番号の一覧が手に入るので、それを加工すれば、市区町村の一覧が手に入ります。
  • 回答No.4

口で説明するのが面倒なので、ソースを書きます。 一通り、SJISで確かめましたが、きちんと表示でき ました。1バイトごとにパターンマッチさせるので、 1バイト文字と2バイト文字が混じっていても大丈夫 なはずです。 >>ソースはここから $result = 0; @ken = ("北海道","青森県","秋田県",&q ...続きを読む
口で説明するのが面倒なので、ソースを書きます。
一通り、SJISで確かめましたが、きちんと表示でき
ました。1バイトごとにパターンマッチさせるので、
1バイト文字と2バイト文字が混じっていても大丈夫
なはずです。

>>ソースはここから
$result = 0;
@ken = ("北海道","青森県","秋田県","岩手県",
 "山形県","宮城県","福島県","茨城県","群馬県",
 "栃木県","千葉県","埼玉県","神奈川県","東京都",
 "新潟県","長野県","山梨県","静岡県","岐阜県",
 "愛知県","滋賀県","富山県","石川県","京都府",
 "大阪府","和歌山県","三重県","鳥取県",
 "島根県","広島県","岡山県","兵庫県","香川県",
 "徳島県","愛媛県","高知県","福岡県", 佐賀県",
 "長崎県","熊本県","宮崎県","鹿児島県",
 "大分県","沖縄県","山口県","奈良県","福井県");

@str = ("東京都千代田区1-1-1", "千代田区1-1-1",
 "千葉県千葉市中央区", "千葉市中央区",
 "兵庫県神戸市","神戸市");

for($i = 0; $i < @str; $i++)
{
  foreach $key (@ken)
  {
    if($str[$i] =~ s/$key//eg)
    {
      ;
    }
  }
  print "$str[$i]\n";
}
>>ソースはここまで

とりあえず、こんなもんですかね。だめな場合は、
補足して下さい。
ではでは☆
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ