KITA Eng.

北海道でサーバー技術者として歩み出したひとが綴るblog。

アルファベット文字列をフォネティックコードで表記するPythonモジュールをつくったよ:a2pcej

アカウントの追加業務とかで、パスワードをこちらで適当に生成してお知らせるときに、パスワード文字列のよみがなをつけて渡すということが、しばしばあるわけです。

たとえば、こんなやつ。

ユーザー名: hogehoge
パスワード: WPzm60zh (ダブリュー(大文字)・ピー(大文字)・ゼット・エム・ロク・ゼロ・ゼット・エイチ)

大した数じゃなければ手打ちするのもいいんですが、一気にどかっと発行するとかなると手打ちするは厄介です。自動でやってしまいたいところです。

Google先生に尋ねると、

といったのが出てきます。パスワードの生成からやってしまってよければ、フリガナつきパスワード生成ツール - Password Generator は、大量生産できるのでよさ気ですが...

パスワードのよみがなの区切り文字や、大文字につける表記が自分のところで使っているフォーマットと合わなかった...

ということで、実はずい分前に手元で使える用には、ざっくりpythonスクリプトで作ってありました

今回これを大改造して、

  • 区切り文字を指定できる
  • 大文字につける印を指定できる
  • カタカナ表記だけではなく、英語圏用(?)にフォネティックコード表記できる

というものを作ってみました。いろんなところで使いまわしやすいように、PyPIに上げて、pipでインストールできるようにしました。 謎のネーミングセンスにより、a2pcejという名称にしました。一応、convert Alphabet to Phonetic Code in English and Japaneseの略。

使い方

以下Python3.5環境での出力例です。関数の戻り値はunicode文字列になっています。

兎にも角にもモジュールをインポート。
>>> from a2pcej import *
アルファベットの文字列にカタカナでよみがなをつける。 :conv_ak()
>>> conv_ak('examples')
'イー・エクス・エイ・エム・ピー・エル・イー・エス'

アルファベット大文字にはデフォルトで「(大文字)」と付く。
アルファベット以外(記号や数字)はデフォルトだとよみがな変換されない(その文字がそのままま出る)。

>>> conv_ak('Examples002')
'イー(大文字)・エクス・エイ・エム・ピー・エル・イー・エス・0・0・2'

区切り文字を変更するには、delimiter='文字列'を引数に追加する。
アルファベット大文字につく文字列の変更をするには、 sign='文字列'を引数に追加する。
空にすれば、区切りなし、大文字表記なしになる。

>>> conv_ak('Examples003', delimiter='/', sign='(大)')
'イー(大)/エクス/エイ/エム/ピー/エル/イー/エス/0/0/3'

>>> conv_ak('Examples003', delimiter='', sign='')
'イーエクスエイエムピーエルイーエス00'

数字にもよみがなを付けたいときは、num=Trueを引数に加える。

>>> conv_ak('Examples004', num=True)
'イー(大文字)・エクス・エイ・エム・ピー・エル・イー・エス・ゼロ・ゼロ・ヨン'
アルファベットの文字列に英単語のフォネティックコードをつける。 :conv_al()

オプションは、 conv_ak()と同じなので、出力例だけ。 区切り文字、大文字につく文字列のデフォルトを英語圏っぽいのにしてある。

>>> conv_al('examples')
'Echo-Xray-Alfa-Mike-Papa-Lima-Echo-Sierra'

>>> conv_al('Examples002')
'Echo(CAPS)-Xray-Alfa-Mike-Papa-Lima-Echo-Sierra-0-0-2'

>>> conv_al('Examples003', delimiter=', ', sign='(CAPITAL)')
'Echo(CAPITAL), Xray, Alfa, Mike, Papa, Lima, Echo, Sierra, 0, 0, 3,'

>>> conv_al('Examples004', num=True)
'Echo(CAPS)-Xray-Alfa-Mike-Papa-Lima-Echo-Sierra-zero-zero-four'

ソース

github.com

PyPI

pypi.python.org


雑感

python2での文字コードのこととか、パッケージングする方法とか、pandocってなんか便利なツールがあるとか、いろいろお勉強になりましたです。久しぶりに英文も書いたらスペルミスと謎の構文の嵐です。