Python入門トップページ


目次

  1. プログラミング言語
  2. Anaconda - Jupyter Notebook / JupyterLab の環境設定
  3. Python の基礎
  4. リスト,タプル,辞書,集合
  5. 再び Jupyter Notebook の操作
  6. Python の制御構文
  7. 関数
  8. 便利な関数など
  9. リストの内包表記
  10. 多次元リスト
  11. クラス
  12. 演習問題
  13. 雑多な情報

Python の基礎

雑多な情報

カタカナとひらがなを変換する

ここでは日本語文字列の中に含まれるカタカナをひらがなに変換する方法を説明し,その関数を実装します.その後,ひらがなからカタカナに変換する関数も実装します.

目次に戻る

考え方

まず,カタカナの「アイウエオ」だけをひらがなの「あいうえお」に変換することを考えます.そのためには「ア」は「あ」に,「イ」は「い」にといった変換ルールを記した辞書を作成します.


katakana2hiragana_map = {
    'ア': 'あ',
    'イ': 'い',
    'ウ': 'う',
    'エ': 'え',
    'オ': 'お',
}
print(katakana2hiragana_map)
{'ア': 'あ', 'イ': 'い', 'ウ': 'う', 'エ': 'え', 'オ': 'お'}

この辞書に str.translate()str.maketrans() を利用すると,「アイウエオ」だけが「あいうえお」に変換できました.


katakana_text = 'アルバイト'
hiragana_text = katakana_text.translate(str.maketrans(katakana2hiragana_map))
print(katakana_text)
print(hiragana_text)
アルバイト
あルバいト

katakana_text = 'エイリアン'
hiragana_text = katakana_text.translate(str.maketrans(katakana2hiragana_map))
print(katakana_text)
print(hiragana_text)
エイリアン
えいリあン

なお,str.maketrans() では次のような結果が得られます.


print(katakana2hiragana_map)
print(str.maketrans(katakana2hiragana_map))
{'ア': 'あ', 'イ': 'い', 'ウ': 'う', 'エ': 'え', 'オ': 'お'}
{12450: 'あ', 12452: 'い', 12454: 'う', 12456: 'え', 12458: 'お'}

つまり,「ア」が「12450」という数値に置き換えられています.Unicode の文字コード表 を参照すると「ア」の文字コードは「0x30A2」であることがわかります.これは16進数であるので,10進数に変換すると「12450」であることがわかりました.


a = 0x30A2
print(a)
12450

なお,文字から文字コードに変換する ord()文字コードから文字に変換する chr() の利用方法も確認しておきます.


print(ord('ア'))
print(chr(0x30A2))
print(chr(12450))
12450
ア
ア

目次に戻る

カタカナをひらがなに変換する関数を作成

上では「アイウエオ」を「あいうえお」に変換する辞書を利用しました.すべてのカタカナとひらがなを対応付ける辞書を作成できればカタカナからひらがなへの変換ができそうです.つまり,Unicode のカタカナ部分の文字コード表Unicode のひらがな部分の文字コード表 を参照すると「ァ:0x30A1」から「ヶ:0x30F6」までの範囲を「ぁ:0x3041」から「ゖ:0x3096」の範囲に置き換える辞書を作成すればよいことになります.内包表記と,文字から文字コードに変換する ord()文字コードから文字に変換する chr() を利用することで,カタカナからひらがなに変換するための辞書を効率的に作成できます.次の通り,カタカナをひらがなに一括変換する katakana2hiragana() 関数を定義します.


def katakana2hiragana(text):
    """
    カタカナをひらがなに変換
    """

    # カタカナの Unicode範囲 0x30A1 (ァ) から 0x30F6 (ヶ)
    # ひらがなの Unicode範囲 0x3041 (ぁ) から 0x3096 (ゖ)
    katakana_start = ord("ァ")
    hiragana_start = ord("ぁ")

    # カタカナをひらがなに変換するための辞書
    katakana2hiragana_map = {
        chr(i): chr(i - katakana_start + hiragana_start) for i in range(katakana_start, ord("ヶ") + 1)
    }

    # 次を有効にすると辞書の内容を確認できます
    # print(katakana2hiragana_map)

    # str.translate を使用して変換
    return text.translate(str.maketrans(katakana2hiragana_map))

作成した関数を使ってカタカナに変換してみます.


print(katakana2hiragana("アルバイト"))
あるばいと

print(katakana2hiragana("エイリアン"))
えいりあん


print(katakana2hiragana("カタカナをひらがなに変換する"))
かたかなをひらがなに変換する

目次に戻る

ひらがなをカタカナに変換する関数を作成

上とほぼ同じ考え方でひらがなからカタカナに逆向きに変換する関数も作成してみましょう.


def hiragana2katakana(text):
    """
    ひらがなをカタカナに変換
    """

    # カタカナの Unicode範囲 0x30A1 (ァ) から 0x30F6 (ヶ)
    # ひらがなの Unicode範囲 0x3041 (ぁ) から 0x3096 (ゖ)
    katakana_start = ord("ァ")
    hiragana_start = ord("ぁ")

    # ひらがなをカタカナに変換するための辞書
    hiragana2katakana_map = {
        chr(i): chr(i - hiragana_start + katakana_start) for i in range(hiragana_start, ord("ゖ") + 1)
    }

    # 次を有効にすると辞書の内容を確認できます
    # print(hiragana2katakana_map)

    # str.translate を使用して変換
    return text.translate(str.maketrans(hiragana2katakana_map))

print(hiragana2katakana("ひらがなをカタカナに変換する"))
ヒラガナヲカタカナニ変換スル

目次に戻る