2012-04-05 8 views
12

Ktoś dał mi składnię obciąć ciąg następująco:Obcinanie ciąg w python

string = "My Text String" 

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

Nie jestem pewien, co to się nazywa (string [0: 3] składnia), więc jestem Trudno było znaleźć to w internecie i zrozumieć, jak to działa. Do tej pory myślę, że to działa tak:

  • string [0: 3] # zwraca pierwsze 3 znaki w ciągu
  • string [0: -3] # powróci ostatnie 3 znaki napisu
  • string [3: -3] # wydaje się obciąć pierwsze 3 znaki a ostatnie 3 znaki
  • string [1: 0] # i zwraca 2 apostrofów .... nie jestem pewien, co to robi
  • ciąg [-1: 1] # taki sam jak ostatni

W każdym razie, istnieje kilka innych przykładów, które mogę dodać, ale moim celem jest to, że jestem nowy w tej funkcji i zastanawiam się, jak to się nazywa i gdzie mogę znaleźć więcej informacji na ten temat. Jestem pewien, że brakuje mi gdzieś dobrego odniesienia.

Dzięki za wszelkie sugestie, Mike

+3

Nazywa się plaster i operacja nazywa się krojenie. – kindall

+3

Zobacz [to znane pytanie] (http://stackoverflow.com/questions/509211/good-primer-for-python-slice-notation). – DSM

+0

Ten diagram, w linku podanym przez @DSM: http://stackoverflow.com/a/509297/401828 – heltonbiker

Odpowiedz

18

To się nazywa kawałek:

s [i: j: k]

Kawałek s od i do j jest zdefiniowana jako sekwencję elementów o k kodzie tak, że i < = k < j. Jeśli i lub j jest większe niż len (s), użyj len (s). Jeśli I jest pominięte lub Brak, użyj 0. Jeśli pominięto j lub Brak, użyj len (s). Jeśli i jest większe lub równe j, plasterek jest pusty.

source

+1

Wielkie dzięki Uku! Dziękuję za podanie nazwy i dobrego przykładu, jak to działa. Bardzo doceniane! – Mike

8

Jak @Uku i @thebjorn powiedział jego nazwie Slicing

Ale jeden łatwiejszy sposób myślenia jest rozważenie ciąg jak listy, na przykład można zrobić:

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

I to samo, jeśli chcesz uzyskać konkretną literę wewnątrz łańcucha:

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

ps .: Pamiętaj, że to od zera, więc tekst [4] powrót 5th list.

Używając Slices, zwróci tekst "podciąg" [i: j] z oryginalnego ciągu znaków, gdzie "i" jest początkowym indeksem (włącznie), a "j" jest indeksem końcowym (wyłącznym), na przykład:

>> 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 

ujemny indeks jest w stosunku do końca łańcuch o co podstawienie z ujemnym wskaźnikiem „len (tekst) + I”.

W naszym przypadku len (tekst) wynosi 10, ujemny indeks -1 będzie jak przy użyciu tekstu [9], aby uzyskać ostatni element, -2 zwraca ostatni, jeden element i tak dalej.

W przykładach wysłanych, string [0: -3] powinien zwrócić wszystko, ale ostatnie 3 znaków i ciąg [3: -3] powinien zwrócić wszystko, ale pierwszy i ostatni 3 3.

Hope it helpped.