1. はじめに
Pythonで文字や記号を扱う際に欠かせないのが「Unicodeコードポイントと文字の変換」です。
本記事では、Python初心者〜中級者向けに、chr()
や ord()
を活用して、Unicodeコードポイントと文字を相互変換する方法をわかりやすく解説します。
例えば、「A」という文字が数値でどのように表現されているか、逆に数値からどの文字になるかを理解することで、文字列処理やファイル操作、データ分析の場面でも役立ちます。
2. PythonでのUnicodeコードポイントと文字の基本
2-1. ord()関数:文字からコードポイントを取得
ord()
関数は、文字(1文字)をUnicodeコードポイント(整数)に変換します。
# 'A' のコードポイントを取得
code_point = ord('A')
print(code_point)
実行結果:
65
この例では、文字「A」に対応するUnicodeコードポイントが「65」であることがわかります。
2-2. chr()関数:コードポイントから文字を取得
逆に、chr()
関数は、整数(コードポイント)を文字に変換します。
# コードポイント 65 に対応する文字を取得
char = chr(65)
print(char)
実行結果:
A
このように、Unicodeコードポイントと文字の変換はとてもシンプルです。
3. よくある使い方・応用例
3-1. アルファベットの一覧を生成
chr()
とord()
を組み合わせれば、アルファベットの一覧を動的に作成できます。
# A〜Zまでのアルファベットを出力
for i in range(ord('A'), ord('Z') + 1):
print(chr(i), end=' ')
実行結果:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
このように、コードポイントの範囲を使って文字の一覧を簡単に出力できます。
3-2. 絵文字や日本語文字のコードポイントを調べる
絵文字や日本語の文字でもord()
を使えば、そのコードポイントを取得可能です。
# 絵文字と日本語のコードポイントを表示
print(ord('🍣')) # 寿司の絵文字
print(ord('日')) # 日本の「日」
実行結果:
127843
26085
Unicodeは世界中の文字や記号、絵文字を含むため、国際化されたアプリケーションでも便利です。
3-3. バイナリ変換やファイル処理との組み合わせ
Unicodeコードポイントの理解は、エンコーディング処理やencode()
/decode()
の活用にもつながります。
# 文字列をUTF-8エンコードしてバイト列に変換
s = '漢'
encoded = s.encode('utf-8')
print(encoded)
# バイト列から元の文字を復元
decoded = encoded.decode('utf-8')
print(decoded)
実行結果:
b'\xe6\xbc\xa2'
漢
このように、Unicodeを扱う知識はPythonでのファイルI/OやWebスクレイピングなど多くの分野で役立ちます。
4. 注意点・エラー対策
4-1. ord()は1文字限定
ord()
関数に複数文字の文字列を渡すと、TypeError
が発生します。
# 複数文字を渡すとエラーになる
print(ord("AB")) # エラー
実行結果:
TypeError: ord() expected a character, but string of length 2 found
この場合は、ord("AB"[0])
のように1文字ずつ処理しましょう。
4-2. 範囲外のコードポイントに注意
chr()
関数に不正な数値を渡すとValueError
になります(例:負の値など)。
# 無効なコードポイント
print(chr(-1)) # エラー
実行結果:
ValueError: chr() arg not in range(0x110000)
正しい範囲(0〜1,114,111)内の値を使うようにしましょう。
5. まとめ
本記事では、Pythonでの「Unicodeコードポイントと文字の変換」について解説しました。
主に使用する関数は次の2つです:
ord()
:文字 → コードポイントchr()
:コードポイント → 文字
これらの関数は、文字列処理・辞書順のソート・ファイル操作・国際対応など、実務でも活用されます。
学習のコツ: 手を動かしながら試すことで、「数値と文字の関係」が自然に理解できます。特に英字や記号、日本語・絵文字のコードを調べてみると面白い発見があります。
今後はこの知識をベースに、エンコードや文字列操作、正規表現などさらに幅広い処理へ応用していきましょう!