Pythonでプログラミングをしていると、文字をASCIIコードに変換する必要が出てくることがあります。そんなときに便利なのが`ord()`関数です。この記事では、`ord()`関数の使い方と注意点について詳しく解説します。
ord()関数の基本的な使い方
`ord()`関数は、1文字の文字列を受け取り、そのUnicodeコードポイント(整数)を返します。
print(ord('A')) # 65
print(ord('a')) # 97
print(ord('1')) # 49よくあるエラーと解決方法
エラー1: TypeError: ord() expected a character, but string of length 2 found
このエラーは、`ord()`関数に2文字以上の文字列を渡したときに発生します。
# エラーが発生するコード
print(ord('AB')) # TypeError
# 正しいコード
print(ord('A')) # 65エラー2: TypeError: ord() expected string of length 1, but int found
このエラーは、数値を直接`ord()`関数に渡したときに発生します。
# エラーが発生するコード
print(ord(65)) # TypeError
# 正しいコード
print(ord('A')) # 65実践的な使用例
1. 文字の比較
def is_uppercase(char):
return 65 <= ord(char) <= 90
print(is_uppercase('A')) # True
print(is_uppercase('a')) # False2. 文字列の暗号化
def simple_encrypt(text):
return ''.join([chr(ord(c) + 1) for c in text])
print(simple_encrypt('Hello')) # Ifmmpchr()関数との組み合わせ
`ord()`の逆の機能を持つ`chr()`関数と組み合わせることで、文字とコードポイントの相互変換が可能です。
ascii_code = ord('A') # 65
character = chr(ascii_code) # 'A'
print(character) # A注意点
- `ord()`関数は1文字の文字列のみを受け付けます
- 日本語などの非ASCII文字にも対応していますが、返される値は Unicode コードポイントになります
- エンコーディングの問題を避けるため、Unicode文字列を使用することをお勧めします
まとめ
`ord()`関数は、文字をASCIIコードに変換する際の基本的な関数です。1文字のみを扱うという制限がありますが、文字の処理や比較、暗号化などで幅広く活用できます。エラーの多くは入力値の形式に関するものなので、1文字の文字列を渡すように注意することで解決できます。