原文: How to Substring a String in Python (freeCodeCamp.org)

翻訳・翻案: Yoko Matsuda

Python では、文字列の一部を色々な形で切り出すことができます。この操作はよく‘slicing’(スライス) と呼ばれます。

構文は次の通りです。

string[start: end: step]

上記において、

start: 部分文字列の開始インデックスです。このインデックス番号の位置にある文字は、部分文字列に含まれます。start が指定されなかった場合は、0 が使用されます。

end: 部分文字列の終了インデックスです。このインデックス番号の位置にある文字は、部分文字列に含まれませんend が指定されなかった場合、または文字列の長さ (length) 以上の値が指定された場合は、デフォルト値として文字列の長さと同じ値が使用されます。

step: 開始位置の後、何文字ごとに部分文字列に含めるかを指定します。デフォルト値は 1 です。step の値が指定されなかった場合、1 が使用されます。

基本的な使い方

string[start:end]: インデックス start 番目から end -1 番目までのすべての文字を取得する

string[:end]: 文字列の最初から end -1 番目までのすべての文字を取得する

string[start:]: インデックス start 番目から文字列の最後までのすべての文字を取得する

string[start:end:step]: インデックス start 番目から end -1 番目までの、step 文字ごとの文字を取得する

1. 文字列の最初の 5 文字を取得する

string = "freeCodeCamp"
print(string[0:5])

出力:

> freeC

注: print(string[:5])print(string[0:5]) と同じ結果を返します。

2. 文字列の 3 文字目から、長さ 4 文字分の部分文字列を取得する

string = "freeCodeCamp"
print(string[2:6])

出力:

> eeCo

3. 文字列の最後の文字を取得する

string = "freeCodeCamp"
print(string[-1])

出力:

> p

start または end のインデックス番号は負の数も指定できることに注目してください。負のインデックスは、文字列の最初ではなく最後から数え始めることを意味します (つまり、右から左へ)。

例えばインデックス -1 は文字列の最後の文字を表し、-2 は最後から 2 番目の文字を表します。

4. 文字列の最後の 5 文字を取得する

string = "freeCodeCamp"
print(string[-5:])

出力:

> eCamp

5. 最初の 1 文字と最後の 4 文字を除くすべての文字を含む部分文字列を取得する

string = "freeCodeCamp"
print(string[1:-4])

出力:

> reeCode

6. 文字列から 2 文字ごとに取得する

string = "freeCodeCamp"
print(string[::2])

出力:

> feCdCm