ord() と chr() を使用して文字と整数を変換する
このステップでは、組み込みの Python 関数 ord() と chr() を使用して、文字とその対応する Unicode の整数表現との間で変換する方法を学びます。
Python 3 では、文字列は Unicode を使用して表現されます。ord() 関数は、単一の文字を入力として受け取り、対応する Unicode の 10 進整数値を返します。
これらの関数を試すために、新しい Python ファイルを作成しましょう。WebIDE で、ファイルエクスプローラーの project ディレクトリを右クリックし、New File を選択します。ファイル名を char_conversion.py とします。
char_conversion.py をエディターで開き、次のコードを追加します。
## ord() を使用して文字の Unicode 10 進数値を 取得する
char1 = 'a'
char2 = 'é'
char3 = ';'
print(f"'{char1}' の Unicode 10 進数値は:{ord(char1)}")
print(f"'{char2}' の Unicode 10 進数値は:{ord(char2)}")
print(f"'{char3}' の Unicode 10 進数値は:{ord(char3)}")
ファイルを保存します (Ctrl + S または macOS では Cmd + S)。
次に、統合ターミナルを再度開きます(まだ開いていない場合)。python コマンドを使用してスクリプトを実行します。
python char_conversion.py
以下のような出力が表示されるはずです。
'a' の Unicode 10進数値は: 97
'é' の Unicode 10進数値は: 233
';' の Unicode 10進数値は: 59
chr() 関数は逆の操作を実行します。Unicode コードポイントを表す 10 進整数(または 16 進整数)を受け取り、対応する文字を返します。
chr() 関数を使用するために、char_conversion.py にさらにコードを追加しましょう。既存のコードに次の行を追加します。
## chr() を使用して Unicode 10 進数値から文字を取得する
int1 = 8364
int2 = 8482
print(f"Unicode 10 進数値 {int1} の文字は:{chr(int1)}")
print(f"Unicode 10 進数値 {int2} の文字は:{chr(int2)}")
## chr() で 16 進数値を使用することもできます
hex_int = 0x00A9 ## 文字 '©' の 16 進数
print(f"Unicode 16 進数値 {hex(hex_int)} の文字は:{chr(hex_int)}")
ファイルを再度保存します。
ターミナルからスクリプトを実行します。
python char_conversion.py
出力には chr() 関数の結果が含まれるはずです。
'a' の Unicode 10進数値は: 97
'é' の Unicode 10進数値は: 233
';' の Unicode 10進数値は: 59
Unicode 10進数値 8364 の文字は: €
Unicode 10進数値 8482 の文字は: ™
Unicode 16進数値 0xa9 の文字は: ©
文字の 16 進数 Unicode 表現をどのように見つけるか疑問に思うかもしれません。ord() 関数を使用して 10 進値を取得し、次に組み込みの hex() 関数を使用して 10 進値をその 16 進数文字列表現に変換できます。
char_conversion.py に次のコードを追加します。
## 文字をその 16 進数 Unicode 表現に変換する
char_copyright = '©'
decimal_copyright = ord(char_copyright)
hexadecimal_copyright = hex(decimal_copyright)
print(f"'{char_copyright}' の 16 進数 Unicode 値は:{hexadecimal_copyright}")
ファイルを保存し、最後にもう一度実行します。
python char_conversion.py
最終的な出力には、文字 '©' の 16 進数値が含まれます。
'a' の Unicode 10進数値は: 97
'é' の Unicode 10進数値は: 233
';' の Unicode 10進数値は: 59
Unicode 10進数値 8364 の文字は: €
Unicode 10進数値 8482 の文字は: ™
Unicode 16進数値 0xa9 の文字は: ©
'©' の16進数 Unicode 値は: 0xa9
これにより、ord()、chr()、および hex() を組み合わせて Python で文字エンコーディングを扱う方法が示されます。