Python 文字列の位置を取得する(find/index)

Pythonの文字列の位置を取得するサンプルです。

確認環境
・Python 3.7.0

目次

find+引数1つ 前から検索する(find)
find+引数2つ 前から検索する+開始位置を指定(find)
find+引数3つ 前から検索する+開始位置を指定+終了位置を指定(find)
rfind+引数1つ 後から検索する(rfind)
index+引数1つ 前から検索する(index)
index+引数2つ 前から検索する+開始位置を指定(index)
index+引数3つ 前から検索する+開始位置を指定+終了位置を指定(index)

前から検索する(find)

文字列.find(検索する文字列 )
  • 文字列の先頭から検索し見つかった場合その位置を返します。
  • 先頭は0から始まります。
  • 指定する文字列がない場合-1を返します。(←indexメソッドとの違い)
  • rfindメソッドを使用すると文字列の末尾から検索します。

findメソッドで文字列の位置を取得するサンプルです。

# coding: utf-8

str1 = 'abcabc'
print(str1.find('a')) # 0
print(str1.find('b')) # 1
print(str1.find('c')) # 2
print(str1.find('abc')) # 0
print(str1.find('z')) # -1

str2 = 'あいうあいう'
print(str2.find('あ')) # 0
print(str2.find('い')) # 1
print(str2.find('う')) # 2

4~7行目は、前から検索し引数の文字列が最初に見つかった位置を返しています。
8行目は、該当の文字がないので-1が返ります。
10行目は、変数に日本語の文字列を代入しています。
11~13行目は、前から検索し引数の文字列が最初に見つかった位置を返しています

前から検索する+開始位置を指定(find)

文字列.find(検索する文字列 ,開始の位置)

2つめの引数は検索を開始する位置です。

findメソッドで検索開始位置を指定するサンプルです。

# coding: utf-8

str1 = 'あいうあいう'
print(str1.find('あ', 0)) # 0
print(str1.find('あ', 1)) # 3
print(str1.find('あ', 2)) # 3
print(str1.find('あ', 3)) # 3
print(str1.find('あ', 4)) # -1
print(str1.find('あ', 5)) # -1

4行目の引数は0で対象の文字列は(あいうあいう)です。位置の0が返ります。
5行目の引数は1で対象の文字列は(いうあいう)です。位置の3が返ります。
6行目の引数は2で対象の文字列は(うあいう)です。位置の3が返ります。
7行目の引数は3で対象の文字列は(あいう)です。位置の3が返ります。
8行目の引数は4で対象の文字列は(いう)です。文字(あ)はないのでfalseです。
9行目の引数は5で対象の文字列は(う)です。文字(あ)はないのでfalseです。

前から検索する+開始位置を指定+終了位置を指定(find)

文字列.find(検索する文字列 ,開始の位置 ,終了の位置)

2つめの引数は検索を開始する位置で、3つめの引数は終了の位置です。

# coding: utf-8

a = 'あいうえお'
print(a.find('お',2,5)) # 4
print(a.find('お',2,4)) # -1

4行目の引数は2と5なので対象の文字列は(うえお)です。引数の文字列(お)が見つかった位置を返しています。
5行目の引数は2と4なので対象の文字列は(うえ)です。引数の文字列(お)が見つからないので-1を返します。

以下はpython公式ドキュメントのfindメソッドのリンクです。
https://docs.python.jp/3/library/stdtypes.html#str.find

後から検索する(rfind)

文字列を後から検索するサンプルです。

# coding: utf-8

str1  = 'abcabc'
print(str1 .rfind('a')) # 3
print(str1 .rfind('b')) # 4
print(str1 .rfind('c')) # 5
print(str1 .rfind('abc')) # 3
print(str1 .rfind('z')) # -1

str1  = 'あいうあいう'
print(str1 .rfind('あ')) # 3
print(str1 .rfind('い')) # 4
print(str1 .rfind('う')) # 5

4~7行目は、後ろから検索し引数の文字列が最初に見つかった位置を返しています。
8行目は、該当の文字がないので-1が返ります。
10行目は、変数に日本語の文字列を代入しています。
11~13行目は、後ろから検索し引数の文字列が最初に見つかった位置を返しています。

前から検索する(index)

文字列.index(検索する文字列 )
  • 文字列の先頭から検索し見つかった場合その位置を返します。
  • 先頭は0から始まります。
  • 指定する文字列がない場合ValueErrorを返します。(←findメソッドとの違い)
  • rindexメソッドを使用すると文字列の末尾から検索します。

indexメソッドで文字列の位置を取得するサンプルです。

# coding: utf-8

str1 = 'abcabc'
print(str1.index('a')) # 0
print(str1.index('b')) # 1
print(str1.index('c')) # 2
print(str1.index('abc')) # 0
print(str1.index('z')) # ValueError: substring not found

str2 = 'あいうあいう'
print(str2.index('あ')) # 0
print(str2.index('い')) # 1
print(str2.index('う')) # 2

4~7行目は、前から検索し引数の文字列が最初に見つかった位置を返しています。
8行目は、指定した文字がないのでValueErrorを返します。
10行目は、変数に日本語の文字列を代入しています。
11~13行目は、前から検索し引数の文字列が最初に見つかった位置を返しています

前から検索する+開始位置を指定(index)

文字列.index(検索する文字列 ,開始の位置 )

2つめの引数は検索を開始する位置です。

indexメソッドで検索開始位置を指定するサンプルです。

# coding: utf-8

str1 = 'あいうあいう'
print(str1.index('あ', 0)) # 0
print(str1.index('あ', 1)) # 3
print(str1.index('あ', 2)) # 3
print(str1.index('あ', 3)) # 3
print(str1.index('あ', 4)) # ValueError: substring not found
print(str1.index('あ', 5)) # ValueError: substring not found

4行目の引数は0で対象の文字列は(あいうあいう)です。位置の0が返ります。
5行目の引数は1で対象の文字列は(いうあいう)です。位置の3が返ります。
6行目の引数は2で対象の文字列は(うあいう)です。位置の3が返ります。
7行目の引数は3で対象の文字列は(あいう)です。位置の3が返ります。
8行目の引数は4で対象の文字列は(いう)です。文字(あ)はないのでValueErrorです。
9行目の引数は5で対象の文字列は(う)です。文字(あ)はないのでValueErrorです。

前から検索する+開始位置を指定+終了位置を指定(index)

文字列.index(検索する文字列 ,開始の位置 ,終了の位置)

2つめの引数は検索を開始する位置で、3つめの引数は終了の位置です。

indexメソッドで検索開始位置と終了位置を指定するサンプルです。

# coding: utf-8

a = 'あいうえお'
print(a.index('お',2,5)) # 4
print(a.index('お',2,4)) #ValueError: substring not found

4行目の引数は2と5なので対象の文字列は(うえお)です。引数の文字列(お)が見つかった位置を返しています。
5行目の引数は2と4なので対象の文字列は(うえ)です。引数の文字列(お)が見つからないのでValueErrorを返します。

以下はpython公式ドキュメントのindexメソッドのリンクです。
https://docs.python.jp/3/library/stdtypes.html#str.index

関連の記事

Python 文字列の始め/終わりを確認(startswith/endswith)
Python 文字列を分割してリストにする(split)
Python 大文字と小文字を変換する(upper/lower)
Python エスケープシーケンスとraw文字列のサンプル
Python 文字列の先頭と末尾を削除(strip/lstrip/rstrip)

△上に戻る