web-dev-qa-db-ja.com

pythonで文字列を切り捨てる

誰かが、次のように文字列を切り捨てる構文を教えてくれました:

string = "My Text String"

print string [0:3] # This is just an example

私はこれが何と呼ばれるのか(string [0:3]構文)わからないので、インターネットで調べてどのように機能するかを理解しようとするのに苦労しました。これまでのところ、私はそれがこのように機能すると思います:

  • string [0:3]#文字列の最初の3文字を返します
  • string [0:-3]#文字列の最後の3文字を返します
  • string [3:-3]#最初の3文字と最後の3文字が切り捨てられているようです
  • string [1:0]#2つの一重引用符を返します。これが何をしているかわからない
  • string [-1:1]#最後のものと同じ

とにかく、追加できる他の例はおそらくいくつかありますが、私のポイントは、この機能に慣れていないことと、それが何と呼ばれ、これに関する詳細情報をどこで見つけることができるかということです。私はどこかで良い参照を逃していると確信しています。

提案をありがとう、マイク

16
Mike

スライスと呼ばれます:

s [i:j:k]

Sのiからjへのスライスは、i <= k <jとなるようなインデックスkを持つアイテムのシーケンスとして定義されます。 iまたはjがlen(s)より大きい場合、len(s)を使用します。 iが省略されるかNoneの場合、0を使用します。jが省略されるかNoneの場合、len(s)を使用します。 iがj以上の場合、スライスは空です。

ソース

21
Uku Loskit

@Ukuと@thebjornが言ったように スライシング

しかし、考えやすい1つの方法は、リストのような文字列を考慮することです。たとえば、次のようにできます。

text = 'Any String'
for letter in text:
    print letter

文字列内に特定の文字を取得する場合も同じです。

>> text = 'Any String'
>> text[4]
'S'

ps .:ゼロベースであるため、text [4]は5番目の文字を返します。

Sliceを使用すると、元の文字列から「substring」text [i:j]が返されます。ここで、「i」は初期インデックス(包括的)、「j」は終了インデックス(包括的)です。

>> text = 'Any String'
>> text[4:6] # from index 4 to 6 exclusive, so it returns letters from index 4 and 5
'St'
>> text[0:4]
'Any '
>> text[:4] # omiting the "i" index means i = 0
'Any '
>> text[4:] # omitting the "j" index means until the end of the string

負のインデックスは、負のインデックスから「len(text)+ i」への置換のように、文字列の末尾に相対的です。

この場合、len(text)は10で、負のインデックス-1はtext [9]を使用して最後の要素を取得するようなもので、-2は最後の要素を返します。

送信した例では、string [0:-3]は最後の3文字を除くすべてを返し、string [3:-3]は最初の3文字と最後の3文字を除くすべてを返します。

お役に立てば幸いです。

9
Guedes

それはスライスと呼ばれます。ここ: http://docs.python.org/tutorial/introduction.html#strings

2
thebjorn