TypeError: string indices must be integers

Python
本ページはプロモーションが含まれています

はじめに

Pythonの文字列の操作をしている時にエラーになりました。
今回はその時に発生したエラーの原因と対処法についてです。

エラーが発生する場合のサンプルソースコードとそれを修正した例も挙げてあります。

発生したエラー

まず発生したエラーですが

TypeError: string indices must be integers

というものでした。
日本語訳すると
TypeError: 文字列のインデックスは整数でなければいけません」
といった内容になります。

エラーの原因と対処法

原因

エラーの原因は文字列に対して文字列を使ってインデックス指定しようとしていたからでした。
Pythonでは、文字列のインデックスは整数でなければならず、文字列や他のデータタイプでインデックス指定することはできません。

対処方法

対処方法はシンプルでインデックスを文字列ではなく数値(Integer)にします。

エラーが出るソースコード

次は文字列から文字を取り出す際に失敗する例です。

str_data = "Hello, world!"
print(str_data["a"])  # "a"は整数ではないためエラーが発生

これを実行すると

TypeError: string indices must be integers

が表示されます。
エラーは2行目で”a”を指定したからです。

修正したソースコード

次が修正したコードです。
文字列から2文字目(インデックスは1)を取得します。
インデックスは0スタートなので注意です。

str_data = "Hello, world!"
print(str_data[1])  # インデックス1は文字'e'(2番目)を指定

これを実行すると

e

と(素っ気ないですが)表示されます。

さいごに

今回はPythonで文字列から文字を取り出す時に発生したエラーでした。
僕が実際にエラーが出た時は、(辞書型は文字列でアクセス出来るため)勘違いして辞書型と文字列を勘違いしました。

インデックスを指定して文字列の一部を取り出す処理というのはよく使うのでぜひ覚えておきたい内容ですね。
コードのボリュームが大きくなったりすると変数の型(Strか辞書か等)がごっちゃになることがあるのでこれも注意です。

この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。

タイトルとURLをコピーしました