【Python初心者入門】文字列の使い方中級編

目次

はじめに

誰でも使う文字列ですが、中級編になると意外と使いこなせていない人も多いのではないかと思い、初級編に引き続きまとめてみました。

競技プログラミングなどでPythonを使いたいと思っていらっしゃる方には打ってつけの記事になっているかと思います。

クマくん
クマくん

初級編やprint関数についても見ていない人がいたら

是非見てみてね!

あわせて読みたい
【Python初心者入門】print関数の使い方 【はじめに】 Pythonを学習するにあたり、デバッグやら何やらでとにかくお世話になるprint関数についてまとめます。 さめさん Hello World!を出力した瞬間から未経験は...
あわせて読みたい
【Python初心者入門】文字列の使い方初級編 【はじめに】 文字列は一番最初に使い始めるリテラルだと思いますが、意外と奥が深いです。 便利な書き方やうっかりエラーが吐かれたりすることも多いかと思うので、あ...

文字列のインデックスで抜き出し

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をよく使う
  • 文字列のインデックス番号にアクセスして直接書き換えはできない
-1で文字列の最後を指定するのはよく使うね!

Pythonの学習に関しては様々本屋には書籍が並んでいますが、下記がおすすめです。

EXCELなども使ったことのない初学者の方

EXCELなどでちょっとPCの操作に慣れている方

他のプログラミング言語を少し触ったことがある方

よかったらシェアしてね!
  • URL Copied!
  • URL Copied!
目次
閉じる