概要
連携される文字列が「半角なのか全角なのか」を判定させる必要があったので、pythonのunicodedata
モジュールを利用してみました。サンプルコードを紹介します。
公式ドキュメントはこちら。
unicodedata.east_asian_width(chr)
ユニコード文字 chr に割り当てられたeast asian widthを文字列で返します。
サンプルコード解説
unicodedata
モジュールのeast_asian_width
を利用すると、「東アジアの文字幅」のカテゴリーが返ってきます。
主に以下の4つがあります。
F (Fullwidth):全角英数
W (Wide):全角かな、漢字
H (Halfwidth):半角カタカナ
A (Ambiguous):特殊文字
Pythonで実際にそれぞれ見てみます。
すると結果は以下の通り。
import unicodedata
def get_east_asian_width_first_char(s):
return unicodedata.east_asian_width(s[0])
fullwidth_num = get_east_asian_width_first_char('2')
print(fullwidth_num)
# F
fullwidth_char = get_east_asian_width_first_char('A')
print(fullwidth_char)
# F
kanji = get_east_asian_width_first_char('漢字')
print(kanji)
# W
hiragana = get_east_asian_width_first_char('あ')
print(hiragana)
# W
katakana = get_east_asian_width_first_char('ア')
print(katakana)
# W
halfwidth_katakana = get_east_asian_width_first_char('ア')
print(halfwidth_katakana)
# H
tokusyu_moji = get_east_asian_width_first_char('▲')
print(tokusyu_moji)
# A
また、
F, W, Aは全角なので2文字分、
H, Na, Nは半角なので1文字分
として扱われます。
参考