Python で文字をインクリメントする方法
目次
文字のインクリメントとは?
C 言語や Java などの他の多くのプログラミング言語では、文字型は ASCII 文字コードそのもので保存されています。 このため、直ちに数値型にキャストでき、その結果「char 型の文字に数字の 1 を足す」という操作ができます。
ASCII 文字コードはアルファベットの部分は、'A' から 'Z' まで順番に並んでいますから、例えば Java を使うと次のようなコードで、 A から Z までの文字を表示できます。
// Java for (char ch = 'A'; ch <= 'Z'; ch += 1) { System.out.print(ch); // 1文字出力 } // 結果 //ABCDEFGHIJKLMNOPQRSTUVWXYZ
このように、文字に数字を足すような操作は Python ではどうすれば良いでしょうか。
ord() で文字から Unicode のコードを取得する
Python のビルトイン関数である ord() を使うと、引数として渡した文字の Unicode のコードが整数値で返ります。
code = ord('A')
print(code) # 65
print(hex(code)) # 0x41
大文字のアルファベットの A は Unicode のコードは U+0041 です。確かにコードが取れました。
chr() で Unicode のコードから文字を取得する
Python のビルトイン関数である chr() を使うと、Unicode の文字コードから文字が取得できます。
Unicode の U+0041 は大文字のアルファベットの A です。このことから、文字を取得すると次のようになります。
ch = chr(0x0041)
print(ch) # A
文字をインクリメントして A から Z まで出力する
ord() 関数と chr() 関数を使うことで、 Python でも文字 A から Z までを順番に出力できます。
code = ord('A')
while True:
ch = chr(code)
print(ch, end='')
if ch == 'Z':
break
code += 1
# ABCDEFGHIJKLMNOPQRSTUVWXYZ
ここでは while 文によるループを行い、if 文を用いて文字が Z であるかチェックして、 もし Z の場合は break を使って while ループを抜けています。