Pythonのchr()とは?使い方・Unicodeコードポイント・ord()との違いを解説

Pythonのchr()は、Unicodeコードポイントを1文字の文字列に変換する組み込み関数です。
たとえば、Unicodeコードポイント65をchr()に渡すと、アルファベットのAを取得できます。
print(chr(65))
実行結果:
A
chr()は、文字コードを扱うプログラムやUnicodeを理解するときに役立つ関数です。この記事では、Pythonのchr()の基本的な使い方から、ord()との違い、Unicode、日本語や記号を扱う方法まで初心者向けに解説します。
chr()とは?
chr()は、整数で指定したUnicodeコードポイントに対応する文字を返す関数です。
Python公式ドキュメントでは、chr()は指定されたUnicodeコードポイントを表す文字列を返す関数と説明されています。たとえばchr(97)は'a'、chr(8364)は'€'になります。(Python documentation)
基本的な構文は次のとおりです。
chr(整数)
基本例
print(chr(65))
print(chr(66))
print(chr(67))
実行結果:
A
B
C
つまり、
65 → A
66 → B
67 → C
というように、数値から文字へ変換できます。
chr()でアルファベットを取得する
chr()では、アルファベットの文字も取得できます。
print(chr(65))
print(chr(66))
print(chr(90))
実行結果:
A
B
Z
小文字の場合も同様です。
print(chr(97))
print(chr(98))
print(chr(122))
実行結果:
a
b
z
アルファベットを連続して生成することもできます。
for code in range(65, 91):
print(chr(code))
実行結果:
A
B
C
D
E
F
G
...
Z
このように、chr()とrange()を組み合わせると、文字コードを利用した処理ができます。
chr()で日本語を取得する
chr()はアルファベットだけでなく、日本語などのUnicode文字にも利用できます。
たとえば「こんにちは」の各文字をUnicodeコードポイントから生成できます。
print(chr(12371))
print(chr(12435))
print(chr(12395))
print(chr(12385))
print(chr(12399))
実行結果:
こんにちは
Python 3のstr型はUnicode文字を扱えるため、日本語を含むさまざまな文字を文字列として扱えます。(Python documentation)
chr()で記号を取得する
chr()を使えば、記号なども取得できます。
たとえばユーロ記号€はUnicodeコードポイント8364です。
print(chr(8364))
実行結果:
€
特殊な記号をコードポイントから生成したい場合にもchr()を利用できます。
chr()とord()の違い
chr()とセットで覚えておきたいのがord()です。
この2つは基本的に逆方向の変換を行います。
| 関数 | 処理 |
|---|---|
chr() |
Unicodeコードポイント → 文字 |
ord() |
文字 → Unicodeコードポイント |
たとえば、
print(chr(65))
は、
A
になります。
逆に、
print(ord("A"))
は、
65
になります。
つまり、
chr(65)
と
ord("A")
は逆方向の処理です。
chr()とord()を組み合わせる
text = "A"
code = ord(text)
print(code)
character = chr(code)
print(character)
実行結果:
65
A
文字とUnicodeコードポイントを相互に変換できます。
chr()で文字を連続生成する
chr()はループと組み合わせると便利です。
たとえば、アルファベットをリストにできます。
characters = []
for code in range(65, 91):
characters.append(chr(code))
print(characters)
実行結果:
['A', 'B', 'C', 'D', 'E', 'F', ..., 'Z']
リスト内包表記を使えば、さらに短く書けます。
characters = [chr(code) for code in range(65, 91)]
print(characters)
chr()で文字列を作る
複数のUnicodeコードポイントから文字列を作ることもできます。
codes = [72, 101, 108, 108, 111]
text = "".join(chr(code) for code in codes)
print(text)
実行結果:
Hello
このように、
整数のリスト
↓
chr()
↓
文字
↓
join()
↓
文字列
という処理ができます。
chr()の引数に指定できる範囲
chr()に指定できるコードポイントは、0から1,114,111(0x10FFFF)までです。範囲外の整数を指定するとValueErrorが発生します。(Python documentation)
たとえば、
print(chr(0))
は実行できます。
一方、
print(chr(1114112))
のように範囲を超える値を指定するとエラーになります。
ValueError
そのため、chr()に変数を渡す場合は、値がUnicodeコードポイントの範囲内にあることを確認する必要があります。
chr()に文字列を渡すとどうなる?
chr()は整数を引数として受け取る関数です。
そのため、文字列を渡すとエラーになります。
print(chr("65"))
この場合、整数ではないためエラーになります。
文字列の"65"を整数の65に変換してから使います。
code = int("65")
print(chr(code))
実行結果:
A
chr()は文字コード変換に使える
chr()は、Unicodeコードポイントから文字を生成したい場合に利用できます。
たとえば、コードポイントをデータとして持っている場合です。
codes = [65, 66, 67]
for code in codes:
print(chr(code))
実行結果:
A
B
C
通常のプログラムでは文字を直接記述できるケースも多いですが、文字コードを扱う処理ではchr()が便利です。
chr()とUnicode
Python 3では文字列がUnicodeを扱えるため、chr()によって英数字だけでなく、日本語、記号、絵文字などさまざまなUnicode文字を扱えます。(Python documentation)
たとえばUnicodeコードポイントを16進数で表すこともできます。
print(chr(0x41))
実行結果:
A
0x41は10進数では65なので、
chr(0x41)
は、
chr(65)
と同じ結果になります。
chr()を使うときのポイント
chr()を覚えるときは、次の3点を押さえておけば十分です。
1. 数字から文字に変換する
chr(65)
↓
A
2. ord()は逆方向
ord("A")
↓
65
3. Unicodeコードポイントを扱う
chr(8364)
↓
€
chr()は「コードポイントから文字を作る関数」と覚えると分かりやすいでしょう。
chr()まとめ
Pythonのchr()は、Unicodeコードポイントを対応する1文字の文字列に変換する組み込み関数です。
基本的な使い方は次のとおりです。
print(chr(65))
実行結果:
A
また、ord()とは逆方向の処理になります。
chr(65) # 65 → "A"
ord("A") # "A" → 65
文字コードを利用した処理、Unicodeの学習、文字列生成などで活用できます。
よく使うPython組み込み関数
chr()とあわせて、以下の関数も覚えておくとPythonの基礎力が高まります。
-
ord():文字をUnicodeコードポイントに変換 -
ascii():ASCII文字以外をエスケープした表現にする -
bin():整数を2進数に変換 -
oct():整数を8進数に変換 -
hex():整数を16進数に変換 -
int():整数へ変換 -
str():文字列へ変換
Pythonの組み込み関数は、Pythonインタプリタで標準的に利用できる関数として提供されています。(Python documentation)
あわせて読みたい
chr()は、Pythonの組み込み関数の1つです。ほかの関数・メソッドとあわせて確認したい方は、次の一覧ページをご覧ください。




