Pythonでは、文字列の長さを取得するためにlen
関数を使用します。この関数は、全角(2バイト文字)・半角(1バイト文字)を区別せず、すべて1文字としてカウントします。
print(len('abcあいう')) # 6
しかし、全角と半角を区別する場合はどうすればよいでしょうか。その場合は、unicodedata
モジュールを用いて各文字の幅をチェックします。
import unicodedata
def length_double_byte_str(text):
"""全角・半角を区別して文字列の長さを返す"""
count = 0
for c in text:
# 全角文字などの2バイト文字は'F','W','A'のいずれかに当てはまるとする
if unicodedata.east_asian_width(c) in 'FWA':
count += 2
else:
count += 1
return count
len_str = length_double_byte_str('abcあいう')
print(len_str) # 9
このサンプルでは abc
は半角文字なので合計3、 あいう
は全角文字なので合計6としてカウントされています。
以上がPythonで日本語文字列の長さを取得する方法です。全角と半角を区別するかどうかによって、適切な方法を選択してください。