「20201001」という文字列から、年だけを抽出したい場合があります。
この場合、Pythonではどうするのでしょうか?
スライスを使います。
スライスチーズのスライスと覚えてください。
本記事の内容
- Pythonにおけるスライス[]
- 文字列の先頭から何文字だけ抜き出す
- 文字列の末尾から何文字だけ抜き出す
- 文字列の途中で何文字だけ抜き出す
それでは、上記を説明していきます。
Pythonにおけるスライス[]
スライスは、スライスチーズのスライスでしたね。
辞書的には、薄く切ることがその意味です。
同じように、文字列を薄く切る(切り出す)とイメージしましょう。
これで、Pythonにおけるスライスがイメージできたはずです。
では、Pythonのスライスについてもう少し話を進めます。
切り出すという以上は、範囲の指定が必要です。
どこからどこまで切り出すのか?という範囲の指定です。
その前に、スライスにおける範囲を確認しておきます。
+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1
正のインデックスと負のインデックスが、存在します。
ここでは、正のインデッスクのみを確認します。
負のインデッスクに関しては、後ほど実践の際に出てきます。
「Python」は、6個の文字列で構成されています。
よって、0から6(文字数)までの範囲を指定できると覚えましょう。
プログラムなんて、習うより慣れろです。
実際の動きを確認した方が、理解は早いです。
moji = "Python" print(moji[0:6]) print(moji[0:5]) print(moji[0:4]) print(moji[0:3]) print(moji[0:2]) print(moji[0:1]) print(moji[0:0])
上記コードの実行結果は、以下の通りです。
Python Pytho Pyth Pyt Py P
簡単ですよね。
では、実践的な使い方を確認していきましょう。
ただし、今回は文字列の操作におけるスライスの説明です。
実は、スライスは文字列以外にも使うことができます。
でも、それをここで説明するとかえって理解を妨げることになります。
よって、本記事では文字列のスライスに絞って解説をしています。
文字列の先頭から何文字だけ抜き出す
冒頭で触れたことですね。
先頭から何文字だけ抜き出すというのは、プログラムでは本当によく行われます。
実際に年を抜き出してみます。
ymd_str = "20201001" print(ymd_str[0:4]) print(ymd_str[:4])
このコードの実行結果は、以下。
2020 2020
勘の鋭い方は、もうわかりましたね。
0は省略可能です。
文字列の末尾から何文字だけ抜き出す
このパターンもよく見ますね。
例えば、「20201001」から日だけを抜き出したい場合です。
8文字の文字列から、末尾から2文字抜き出します。
ymd_str = "20201001" print(ymd_str[6:8]) print(ymd_str[-2:8]) print(ymd_str[-2:])
このコードの実行結果は、以下。
01 01 01
さて、あなたはどのようにコーディングしますか?
私は、ymd_str[-2:]にします。
なお、末尾は省略可能です。
0が省略できたのと同じ考え方ですね。
じゃあ、両方とも省略したら?
やってみましょう。
ymd_str = "20201001" print(ymd_str[:])
上記コードの実行結果です。
20201001
まあ、こうなりますよね。
文字列の途中で何文字だけ抜き出す
先頭・末尾からの抽出とくらべれば、このパターンはかなり頻度が減りますね。
と言うより、途中からの抽出であれば、スライスは使わないです。
正規表現で抜き出すパターンが多いでしょうね。
でも、折角なので確認しておきます。
じゃあ、「20201001」から月だけを抜き出したいとします。
ymd_str = "20201001" print(ymd_str[4:6])
このコードの実行結果は、「10」です。
直感的にはコーディングしにくいですよね。
だから、実際には使うことはあまりないかもしれません。