2012-04-05 7 views
12

누군가가 문자열을 잘라야 나에게 구문을했다 ([0 : 3] 문자열 구문), 그래서 ' 인터넷에서 검색하고 작동하는 방식을 이해하려고 힘든 시간을 보냈습니다. 지금까지 나는 다음과 같이 작동 생각 :는 파이썬에서 문자열을 잘라 내기

  • 문자열 [0 : 3] # 문자열의 처음 3 개 문자를 반환
  • 문자열 [0 : -3] # 문자열의 마지막 3 개 문자를 반환합니다
  • 문자열 [3 : -3] #은 처음 3 개 문자와 마지막 3 개 문자를 잘라야 것 같다
  • 문자열 [1 : 0] # 나는이 작은 따옴표를 .... 돌려 확실하지 어떤이는
  • 을하고있다
  • 문자열 [-1 : 1] # 마지막 것과 동일 #

어쨌든 내가 추가 할 수있는 몇 가지 다른 예가있을 수 있지만 요점은 내가이 기능을 처음 접했을 때 무엇이 ​​불려지는지 궁금해하며 이에 대한 자세한 정보를 찾을 수 있습니다. 나는 어딘가에서 좋은 참고를 놓치고 있다고 확신한다. 어떠한 제안

덕분에, 그것은 슬라이스라고

+3

슬라이스라고하며 작업을 조각이라고합니다. – kindall

+3

[이 유명한 질문] (http://stackoverflow.com/questions/509211/good-primer-for-python-slice-notation)을 참조하십시오. – DSM

+0

@DSM에서 제공하는 링크의이 다이어그램 : http://stackoverflow.com/a/509297/401828 – heltonbiker

답변

18

마이크 :

S [I : J : K]

는 는

는 J 행 I의 (S)의 슬라이스가 정의되고 아이템의 시퀀스로서, 인덱스 k와 같이, i < = k <j. i 또는 j가 len (s)보다 큰 경우 len (s)을 사용하십시오. i가 생략되었거나 없음 인 경우 0을 사용합니다. j가 생략되거나 없음 인 경우 len (s)을 사용하십시오. i가 j보다 크거나 같으면 슬라이스가 비어 있습니다. 그것은, 슬라이스라고

source

+1

덕분에 우쿠! 어떻게 작동하는지에 대한 좋은 예와 이름을 주셔서 감사합니다. 매우 감사! – Mike

8

및 @thebjorn 생각하는 그것이라 Slicing

그러나 하나 쉬운 방법은 예를 들어 당신이 할 수있는, 목록과 같은 문자열을 고려하는 것입니다 말했다 당신이 문자열 안에 특정 편지 받기를 원한다면 같은 :

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

추신 : 제로 기반의 기억, 그래서 텍스트는 [4] 5 편지를 반환합니다.

슬라이스를 사용하면 "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 

음수 지수 "(문자) + I를 렌"를 네거티브 인덱스에서 교체하기와 같은 문자열의 끝을 기준으로한다.

우리의 경우 len (텍스트)은 10이고, 음수 인덱스 -1은 텍스트 [9]를 사용하여 마지막 요소를 얻는 것과 같고, -2는 마지막이지만 하나의 요소를 반환하는 것과 같습니다. 당신이 보낸 예에서

는, 문자열 [0 : -3] 지난 3 개 문자 및 문자열하지만 모든 것을 반환해야합니다 [3 : -3] 처음 3을 제외한 모든 것을 반환해야하고 마지막 3

는 helpped 바랍니다.