0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

拗音・促音(ァィゥェォャュョッ)を修正するコード

Last updated at Posted at 2020-12-31

※初投稿です。お手柔らかにお願いします。

古いシステムなんかだと、銀行の口座名義に拗音(ァィゥェォャュョ)や促音(ッ)が使われていると支払処理を受け付けてくれない場合があります。

私の勤めている会社のシステム(SQLserver)がまさにそれで、手入力の場合には拗音・促音は受け付けないのですが、コピペなどだとすり抜けて入ってしまい、いざ支払処理をかけたらエラーが出る・・・(銀行にもよる)といったことが少なからずありました。
また、今後の予定として、システムに登録するための書類(Excelで作成)からデータを抜き出し、pyodbcでSQLserverにダイレクトに転記させたいので、遅くともその時点で拗音・促音を修正しておかないと同じ轍を踏むことになることからそんなコードを書く必要が生じ、思い付きで書いたらまあそれなりにうまくいったという次第です。

そんなわけで、あまり需要がないかもしれませんが、せっかく書いたこちらでQiitaデビューさせていただきます!

コード
you_soku = 'ァィゥェォャュョッ'
print('変更前-->', you_soku)    # 確認用

ys_dict = {'': '', '': '', '': '', '': '', '': '', '': '', '': '', '': '', '': ''}
for ys in ys_dict.keys():
    while ys in you_soku:
        you_soku = you_soku.replace(ys, ys_dict[ys])
print('変更後-->', you_soku)    # 確認用
出力結果
変更前--> ァィゥェォャュョッ
変更後--> アイウエオヤユヨツ

拗音・促音の辞書をループさせ、キーが対象文字列内(上記の場合you_sokuに格納されている文字列内)にある限り、そのキーに対応した文字(バリュー)を置換させるようにしてあります。
お気づきの方もいらっしゃると思いますが、ネストされている対象文字列の変数(上記の場合you_soku)を変えてしまうと、無限ループしてしまいます。。(実はやった口ですw)

実際にありそうな口座名義で試してみます。
もちろん、架空の方です。(軽く某ロックミュージシャンっぽい名前ですが、特にファンではございません。)

コード
account_name = 'キッカワ ショウジ'
print('変更前-->', account_name)    # 確認用

ys_dict = {'': '', '': '', '': '', '': '', '': '', '': '', '': '', '': '', '': ''}
for ys in ys_dict.keys():
    while ys in account_name:
        account_name = account_name.replace(ys, ys_dict[ys])
print('変更後-->', account_name)    # 確認用
出力結果
変更前--> キッカワ ショウジ
変更後--> キツカワ シヨウジ

本来であれば、このようなコードを使わずに済むよう、システム側で対応すべきなんですがね。
まあ言ってても始まらないので、書いてみました。

ご指摘・ご意見、大歓迎です。
まだまだ見習いですので、忌憚なくツッコミを入れていただければと思います。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?