ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

pythonで全角半角文字を考慮して文字幅を数える

(2020-04-20 初稿 - 2021-05-12 転記・修正)

はじめに

少し前に bash スクリプトで、全角半角文字を考慮して文字数を数える方法をアップした。

ここでは、pythonで全角半角文字を判別する方法を記述する。
なお、この方法は、以下のサイト等を参考にさせていただき、筆者の備忘録である。

方法

標準モジュールunicodedataの関数east_asian_width()を用いる。
この関数を使うと、全角かなはW、半角英数はNa、全角英数はF、半角カナはH、特殊な文字はAが返ってくる。

したがって、WFAが返ってきたときに全角文字(2バイト)、その他は半角文字(1バイト)として判定する。

import unicodedata

def get_east_asian_width_count(text):
    count = 0
    for c in text:
        if unicodedata.east_asian_width(c) in 'WFA':
            count += 2
        else:
            count += 1
    return count

    print(get_east_asian_width_count('aあイu10')) #ここの文字を修正してテスト

おわりに

参考にさせていただいたサイトにも記述があるが、多言語の文字が正確に判定できる保証はないそうだが、日本語、英語の文字ならば利用可能とのこと。
フォントも多彩で、全角半角を数えてどこまで意味があるか疑問だが、参考になれば。

関連ページ