【Python】シェル上で出力した文字列で濁点が分かれてしまった文字(結合文字)を濁音に直すスクリプト

Code

はじまり

リサちゃん
リサちゃん

ただいマジLOVE1000%~。

135ml
135ml

おかえListen to my heart!!

リサちゃん
リサちゃん

今日さ~、道を歩いてたら側溝のドブに落ちちゃってさ~

135ml
135ml

お、おう。まあ、その話も気になるんだが、なんかリサちゃんのセリフの文字の濁音おかしくね?

なんか、濁音が1文字として認識されていないような。

リサちゃん
リサちゃん

え? 本当に? ビビデバビデブー・・・。

本当だ! 全部濁音が変だ! (コピペしてみよう!)

135ml
135ml

あらあら、じゃあ、僕がこの前作ったスクリプトで直しますかあ!

リサちゃん
リサちゃん

なんか段々おじさんがド○えもんに見えてきたよ・・・

ツールのソース

こちらがツールのソースになります。

targetに濁点が別の文字となってしまっている文字列を列挙して、replaceにその文字と同じ順序に修正後の文字列を列挙しています。

class ReplaceCharacter:
    def MakeVoicedsound(self, text):
        """
        text           : String of target text.
        """
        target  = 'がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ'
        replace = 'がぎぐげござじずぜぞだぢづてどばびぶべぼぱぴぷぺぽガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ'
        list_target  = []
        list_replace = []
        for i in range(0, len(target), 2):
            list_target.append(target[i : i+2])
        for i in range(0, len(replace), 1):
            list_replace.append(replace[i : i+1])

        for i in range(0,len(list_target)):
            text = text.replace(list_target[i], list_replace[i])

        return text

テストクラスのソース

今回初めて、テストコードを作って、pytestモジュールでテストさせてみました。

pytestがテストコードを認識できるように、test/__<strong>init__</strong>.pyを作るのを忘れずに。

test/test_TextReplacer.py

from TextReplacer import ReplaceCharacter

class Test_ReplaceCharacter:
    # Unicode : \u3099
    def test_MakeVoicedsound_1_1(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('がぎぐげござじずぜぞ') == 'がぎぐげござじずぜぞ'

    def test_MakeVoicedsound_1_2(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('だぢづでどばびぶべぼ') == 'だぢづてどばびぶべぼ'

    # Unicode : \u309A
    def test_MakeVoicedsound_1_3(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('ぱぴぷぺぽ') == 'ぱぴぷぺぽ'

    # Unicode : \u3099
    def test_MakeVoicedsound_1_4(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('ガギグゲゴザジズゼゾ') == 'ガギグゲゴザジズゼゾ'

    def test_MakeVoicedsound_1_5(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('ダヂヅデドバビブベボ') == 'ダヂヅデドバビブベボ'

    # Unicode : \u309A
    def test_MakeVoicedsound_1_6(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('パピプペポ') == 'パピプペポ'

    # dakuon
    def test_MakeVoicedsound_2_1(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('がぎぐげござじずぜぞ') == 'がぎぐげござじずぜぞ'

    def test_MakeVoicedsound_2_2(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('だぢづてどばびぶべぼ') == 'だぢづてどばびぶべぼ'

    #handakuon
    def test_MakeVoicedsound_2_3(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('ぱぴぷぺぽ') == 'ぱぴぷぺぽ'

    # dakuon
    def test_MakeVoicedsound_2_4(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('ガギグゲゴザジズゼゾ') == 'ガギグゲゴザジズゼゾ'

    def test_MakeVoicedsound_2_5(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('ダヂヅデドバビブベボ') == 'ダヂヅデドバビブベボ'

    # handakuon
    def test_MakeVoicedsound_2_6(self):
        replaceCharacter = ReplaceCharacter()
        assert replaceCharacter.MakeVoicedsound('パピプペポ') == 'パピプペポ'

おしまい

135ml
135ml

どうだい? 直ったかね!

リサちゃん
リサちゃん

やった! 直った! 私のセリフの濁音が1文字で表示されてるぞ!

135ml
135ml

はっはっは。それでドブに落ちたらどうなったんだい?

リサちゃん
リサちゃん

うん、ドブに落ちたら、なんか踏んだ感覚がしてドブの中を探してみたら、1カラットくらいの指輪が落ちてたんだよね。とりあえず拾って引き続き帰ろうとしたら、黒服の人に追いかけられて、巻くべく倉庫の方に逃げたんだけど、結局捕まっちゃっだよね。黒服が私を捕らえた理由は拾った指輪らしくて、その指輪を渡したら、なんかコンクリートが溜まってるドラム缶の中に押し込まれそうになってめっちゃ焦ったんだけど、その時、どこからともなく、着物を着た長髪の男性が助けてくれて、私は何とか助かりました。どうやら、その指輪はこの世に一つしかない貴重なダイヤらしくて、その指輪の本当の持ち主はその着物を着た男性のものだったらしく、「今後もその男性が黒服には睨みを効かせるから、お嬢ちゃんは安心して今まで通り生活しろよ! 指輪を見つけてくれありがとな!」と言われて、今、家に帰ってきました。

ただいマジLOVE2000%~!! 生きてて良かった~~~!!

135ml
135ml

ほ~~~! とりあえず、濁音を1文字にしておいて良かった~~~!!

以上になります!

おまけ

ペンギン
ペンギン

今回の記事のサムネイルが「ペンぎん」なのに、俺が出てこないなんてアリ!?

今回のツールのソースは以下のリポジトリの「LandmasterLibrary」に上がっています。

GitHub - landmaster135/pyclone-tornado: The memorandum for Python.
The memorandum for Python. Contribute to landmaster135/pyclone-tornado development by creating an account on GitHub.

コメント

タイトルとURLをコピーしました