0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】unicodedataのeast_asian_widthで半角か全角かを判断する

Posted at

概要

連携される文字列が「半角なのか全角なのか」を判定させる必要があったので、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('')
print(fullwidth_num)
# F

fullwidth_char = get_east_asian_width_first_char('')
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文字分
として扱われます。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?