« からたち と クルミ | トップページ | 思索の道 »

2008年8月 1日 (金)

Python 電話番号検索 PySearchNr.py

2008-08-01(金)曇り

 ここのところ、Python S60の本とかWEBのマニュアルとか、色々つまみ食いして見ています。先日もデータベースについて興味があると書いたのですが、e32dbとかe32dbmの他に面白いモジュールを知りました。contactsというモジュールで、電話帳のデータ(contacts.cdb)を簡単に扱えるらしいです。

 例を探していたら、「ここのサイト」の画面の下の方に簡単なものが有りました。電話帳データベースを読んで、一覧表示するものです。

 これを見ていて、ふと思いつきました。それは、電話番号の一部分の数字を入れて、電話番号を検索するアプリです。以前、「Mobile Search の違い」の記事で書いたのですが、X02NKに入っているsearchでは、電話番号の一部分の数字での検索はできないのです。(705NKなどの古いバージョンではできる。)

 ということで、電話帳から読み出したデータを利用して、「電話番号の一部分の数字を入力して、それを含む電話番号を検索する」スクリプトをでっち上げてみました。
 プロトタイプは簡単にできて、結構速い検索ができました。が、そこで問題が発生しました。電話帳には電話番号の項目が沢山あります。タイプを指定して取り出すのですが、別のタイプのときダブって出てくる番号があるのです。
 調べたら、下表のようになっていました。

Pysearchnr_2

 タイプ「phone_number」、「mobile_number」で取りだして表示するのですが、結果にダブった番号を表示されます。検索されているのですから問題ないようにも思いますが、逆に電話帳にダブって登録されているような誤解も生じます。

 と言うことで、最初にダブる原因の番号を削除してから検索するなど、ごちゃごちゃ追加したら、結果はオーライになりましたが、若干遅くなってしまいました。
 それでも、X02NKで検索できるようになったこと、705NKでの検索よりは速いかな(電話番号しか検索しないから)ということで、勉強の一環としては良しとしました(甘いか)。

Sscx0174   Sscx0171

 スクリプトを実行した結果の画面です。上の表の6種類の電話番号を入れておいて、検索漏れがないか見ています。
 左は一件1行表示、右はNoを改行して表示した例です。1行の方が良いように見えますが、名前が長いときなどには番号の位置がばらばらになって見にくいです。

 
Sscx0176   Sscx0179

 姓名欄などが長いケースの例です。左は一件1行表示、右はNoを改行して表示した例です。スクロールして読めばいいので、右の改行表示の方が見やすい感じはします。

 
Sscx0170 上の、print文による表示が味気ないので、セレクトリストによる表示をしてみました。なかなかいいのですが、文字が大きくなって番号が読めなくなります。選択してエンターを押せばひとつだけ表示されるからいいのですが、やはり最初から番号を見えた方が良いかなと元に戻しました。


 

Sscx0177 番号入力をする画面です。Python S60 リファレンスマニュアルから記述を読み取って、画面を出すのが大変でした。できてみれば簡単ですが、、、。

 面倒なので日本語とアルファベット(あえて英語とは言’え’ない、、(汗))を同時表示にしていますが、気にしない事にしています。なお、アルファベットの部分については、いい加減です(汗)。


 

 ということで、何とか動きました。自分が使うものを見つけると勉強とコーディングに力が入ります。
      「PySearchNr.py」をダウンロード

  (ファイル関係は テク’ノートの「Python スクリプト雑記」に移しました。
    2008/08/05)

 上記のリスト表示画面や1行、2行表示は片方をコメント化したまま残した汚いリストですが、逆に変更して使うこともできます。

 

|

« からたち と クルミ | トップページ | 思索の道 »

携帯電話アプリ」カテゴリの記事

コメント

はじめまして、San Jose 在住の SaltyCat と申します。日本出張時に、Softbank のSIM をE71へ挿して国際電話をかけようとしたら、事業者識別番号を付けておかけ直しくださいとのメッセージが帰ってきて、国際共通の "+" が使えない事が判りました。Contacts に登録してある 280件のデータ全部 書き換えるのも面倒だし、日本以外では "+" が必須です。結局、Masaさんの Script の一部を拝借して、日本から国際電話をかける時に、"+" を 0046010 へ置き換えて Dial するプログラムを作成しました。大変参考になりました。ありがとうございます。

投稿: SaltyCat | 2008年10月16日 (木) 05時42分

SaltyCat さん、今日は。
この問題は時々、耳にしますね。
少しでもお役に立ったとしたら嬉しいです。勉強して少しずつ書いた甲斐がありました。

投稿: masa | 2008年10月16日 (木) 20時15分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/513620/42032611

この記事へのトラックバック一覧です: Python 電話番号検索 PySearchNr.py:

« からたち と クルミ | トップページ | 思索の道 »