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つです。ほかの関数・メソッドとあわせて確認したい方は、次の一覧ページをご覧ください。

プログラミング学習に興味がある方は、まずは無料体験会へ

無料体験会・お申し込みはこちら