
このレクチャーでは、文字列のインデックスについて学習します。
Table of Contents(目次)
文字列のインデックス
Pythonは文字の情報を、左から順番に要素番号(インデックス)を付けて管理しています。
例えば、I'm Nico, 10.
("私はNico、10歳です。")という文字列は次のようにインデックス管理されています。
[0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] | [9] | [10] | [11] | [12] |
I | ' | m | | N | i | c | o | , | | 1 | 0 | . |
表上段の'[n]'は要素番号(インデックス)で、Pythonで管理している各要素(今回の場合は文字)の順番を表しています。人間の世界では1から番号が始まりますが、コンピューターの世界では0から番号が始まります。ですので、上記文字列は『要素番号[0]から[12]までの、13個の要素で構成されている』ということになります。
(人の数え方と要素番号がずれるので、最初は難しく感じるかもしれませんが、コードを書いていくうちに慣れていきます。)
Pythonの場合、文字列の各要素は1文字ずつ管理され、数字やスペースなどの記号も1つの要素として管理されます。また、漢字や平仮名などの文字も、1文字ずつ要素として管理されます。
文字列から、個々の文字を取得する(インデックス表記)
ここから、文字列から要素を抽出する方法を学習します。
要素番号の指定
先ほど、要素番号について学習しました。Pythonはその要素番号を指定して、特定の文字を抽出することができます。
それでは、先ほどの文字列の最初の文字(要素番号[0])と11番目の文字(要素番号[10])を抽出してみましょう。
s = "I'm Nico, 10."
print(s[0]) # "I"
print(s[10]) # "1"
上記コードを実行すると、I
と1
が出力されます。変数名[要素番号]
の書式で、その変数に保存されている文字列の、指定した要素番号の文字を抽出できます。
要素指定にマイナスの値を使用する
Pythonでは、要素番号にマイナスの値を指定し、要素を抽出することができます。[-1]
は文字列の"最後から1つ目の要素"を指定することになります。順に、[-2]
は文字列の"最後から2番目の要素"、[-3]
は文字列の"最後から3番目の要素"...となります。
[0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | [8] | [9] | [10] | [11] | [12] |
[-13] | [-12] | [-11] | [-10] | [-9] | [-8] | [-7] | [-6] | [-5] | [-4] | [-3] | [-2] | [-1] |
I | ' | m | | N | i | c | o | , | | 1 | 0 | . |
それでは、先ほど抽出した、I
と1
を、マイナスのインデックス番号を使って抽出してみましょう。
s = "I'm Nico, 10."
print(s[-13]) # "I"
print(s[-3]) # "1"
上記コードを実行すると、先ほどと同じようにI
と1
が出力されます。
指定できる要素番号の範囲
要素番号を指定して文字を抽出する時は、その文字列の範囲内で要素番号を指定しなくてはならず、それ以外の要素番号を指定するとエラーになります。
I'm Nico, 10.
の要素番号の最大は[12]なので、13以上の番号を指定するとエラーになります。試しに、次のコードを実行してみましょう。
s = "I'm Nico, 10."
print(s[13])
実行すると、下図のようなエラーメッセージが表示されます。メッセージ内容は、『IndexError: string index out of range (インデックスエラー: 文字列要素番号の範囲外)』となっています。これは、正の数で指定した時だけでなく、マイナスの値で指定する時も範囲外の要素番号を指定するとエラーになります。

要素数を調べる
範囲外の要素番号を指定しないようにするためなど、文字列の要素数を知りたい場合は、"len()"関数を使うことができます。"len"とは、"length(長さ)"の略です。
次のようにコードを書いて、実行してみましょう。
s = "I'm Nico, 10."
print(len(s))
出力結果は、13になります。文字数が13なので、1番最後の要素番号はlen()の結果から1を引いた[12]になります。
あえて、len()を使って1番最後の文字を取得しようとする場合は、次のようにコードを書きます。
s = "I'm Nico, 10."
last_chr = s[len(s)-1]
print(last_chr)
角カッコのなかで、len(s)-1
という計算を行うことで、1番最後の要素番号を得ることができます。
(※ Pythonの場合は[-1]の記法があるので、わざわざこのような書き方をしなくても大丈夫です。他のプログラミング言語では、このような書き方をするものもあるので紹介しました。)