1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python スライスを使って文字列の一部を切り取る

Posted at

#はじめに
Pythonで文字列を切り取る際に便利なスライス機能。
[]内で:を使い、切り取る文字を指定するが、説明の多くがいまいちピンと来ませんでした。
ここでは自分なりの解釈を掲載してみようと思います。

#スライス []

str_1 = 'python'
print(str_1[2:6])
# 'thon'

例えば、文字列'python'thonのみを取り出したかった場合、スライスを使い[2:6]と指定すればOKな非常に便利な機能。
しかし、ここでその数字の設定方法に違和感を感じます。

なぜなら、スライスは[開始位置:終了位置]で指定しますが、開始位置は文字列を0から数えた数字、終了位置は文字列を1から数えた数字、になるからです。
慣れればなんてこと無いのだと思いますが、全然しっくりこない。

###捉え方を変えてみる(回りくどくする)
自分なりの解釈で書き変えたものが以下です。

str_1 = 'python'
start = 2
count = 4
print(str_1[start:start+count])
# 'thon'

まずstartで何文字目からカウントするかを指定します。
tは0から数えて2文字目なので、2を指定します。

次に、開始位置から何文字取り出したいか、をcountで指定します。
'thon'は4文字なので、4を指定します。

スライスはこのように解釈します。
[ (開始位置) : (開始位置+文字数) ]
プログラム上では[start:start+count]で指定します。
これは[2:6]で指定した場合と同義ですが、しっくりくる説明かなと思います。

#最後に
実際にプログラムを書くときには、こんなに回りくどい方法で書く必要は無いと思います。
ただ、指定の方法に迷ったときなど、思い出すとミスが減らせます。
スライスを開発した経緯などは知らないのでわからないですが、ここで書いたような考え方で開発していたのなら良いな。。。

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?