はじめに
誰でも使う文字列ですが、中級編になると意外と使いこなせていない人も多いのではないかと思い、初級編に引き続きまとめてみました。
競技プログラミングなどでPythonを使いたいと思っていらっしゃる方には打ってつけの記事になっているかと思います。

初級編やprint関数についても見ていない人がいたら
是非見てみてね!








文字列のインデックスで抜き出し
1文字抽出する場合
Pythonでは文字列の1つ1つにアクセスすることができます。
以下のようなコードを書きます。
文字列[抜き出したいインデックス番号]
注意点としてはプログラミングの世界のインデックス番号(目次番号)は0から始まることです。
最初の文字を取り出したい時は0であることに注意しましょう。
実際にPythonをターミナルで立ち上げて確認してみましょう。
$ word = 'kumakun'
$ word[0]
> 'k'
もし文字列の最後を取り出したい場合はインデックス番号を
- 文字数 – 1
- -1
のいずれかで指定します。
実際に見てみましょう。
$ word = 'kumakun'
# インデックス番号を文字数 - 1で指定
# wordの文字数は7文字なので 7 - 1 = 6を指定
$ word[6]
> 'n'
# インデックス番号を - 1で指定
$ word[-1]
> 'n'
文字数を数えなくても済むので最後の文字を指定する場合は
[-1]
で指定すると良いでしょう!
2文字以上抽出する場合(文字列のスライス)
文字列から指定数抽出することを文字列のスライスと呼びます。
以下のような構文で抽出します。
文字列[抜き出したい最初のインデックス番号:抜き出したい最後のインデックス番号]
具体例を見てみましょう。
$ word = 'kumakun'
# kumaという文字列だけ取り出したい
# 最初から4文字目までの指定が必要
$ word[0:3]
> 'kuma'
# maという文字列だけ取り出したい
# 3文字目から4文字目までの指定が必要
$ word[2:3]
> 'ma'
番外編
最初から、または途中から最後までという指定であればなんと省略形で記述することができます。
以下のような構文で抽出します。
# 最初からの省略形
文字列[:抜き出したい最後のインデックス番号]
# 途中から最後までの省略系
文字列[:抜き出したい最後のインデックス番号]
具体例を見てみましょう。
$ word = 'kumakun'
# kumaという文字列だけ取り出したい
# 最初から4文字目までの指定が必要
$ word[:3]
> 'kuma'
# kunという文字列だけ取り出したい
# 4文字目から最後までの指定が必要
$ word[3:]
> 'kun'
文字数 -1 以上にインデックス番号の指定した場合
文字列が入っていないので当然エラーになります。
IndexSyntax: string index out of range
というエラー文が出るはずです。
$ word = 'kumakun'
# エラーを出したいので
# 最初から20文字目までを指定してみる
$ word[19]
> ...........................
IndexSyntax: string index out of range
文字列の中身を一部分だけ書き換えたい時
文字列をそのまま再代入する方法もありますが、既存の文字列をなるべく残したまま変更したい時どうすればいいでしょうか?
結論先ほどまで使った知識を元に変更できます。
しかし、書き換えたいからといって以下のように文字列にアクセスして指定のインデックス番号の文字列を書き換えようとすると、 TypeError: ‘str’ object does not support item assignment のエラーが出てしまいます。
$ word = 'kumakun'
# kun読みではなくsan読みにしたい
$ word[4:] = 'san'
> TypeError: 'str' object does not support item assignment
この場合どうするかというと下記のように記述します。
$ word = 'kumakun'
# kun読みではなくsan読みにしたい
$ word = word[:3] + 'san'
$ print(word)
> kumasan
基本的に再代入とやっていることは変わりません。
ただ、全て打ち込むのではなく、変更点以外を抽出して足し合わせて再代入しています。
終わりに
- 文字列のインデックス番号を指定しよう。範囲も選ぶことができる
- インデックス番号の始まりは0から。最後をしているすのは-1をよく使う
- 文字列のインデックス番号にアクセスして直接書き換えはできない




Pythonの学習に関しては様々本屋には書籍が並んでいますが、下記がおすすめです。
EXCELなども使ったことのない初学者の方
EXCELなどでちょっとPCの操作に慣れている方
他のプログラミング言語を少し触ったことがある方