29

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

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] # 前回と同じ

とにかく、追加できる例は他にもいくつかあると思いますが、要点は、私はこの機能を初めて使用するということであり、それが何と呼ばれているのか、これに関する詳細情報はどこで見つけられるのか疑問に思っています。どこかで適切な参照が欠落していると確信しています。

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

4

3 に答える 3

33

スライスといいます。Common Sequence Operations の下の python ドキュメントから:

s[i:j]

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

ソース

于 2012-04-05T19:00:20.593 に答える
12

@Ukuと@thebjornが言ったように、それはスライシングと呼ばれます

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

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

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

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

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

Slice を使用すると、元の文字列から「部分文字列」 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 は、最後から 2 つ前の要素を返します。

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

お役に立てば幸いです。

于 2012-04-05T19:34:35.233 に答える
2

これはスライシングと呼ばれます。詳細については、たとえばここを参照してください: http://docs.python.org/tutorial/introduction.html#strings

于 2012-04-05T19:02:40.123 に答える