(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')) #ここの文字を修正してテスト
おわりに
参考にさせていただいたサイトにも記述があるが、多言語の文字が正確に判定できる保証はないそうだが、日本語、英語の文字ならば利用可能とのこと。
フォントも多彩で、全角半角を数えてどこまで意味があるか疑問だが、参考になれば。