[python] 파이썬에서 문자열의 하위 문자열을 어떻게 얻습니까?

파이썬에서 문자열을 하위 문자열로 묶어 세 번째 문자에서 문자열 끝까지 새로운 문자열을 얻는 방법이 있습니까?

어쩌면 myString[2:end]?

두 번째 부분을 떠나는 것이 ‘끝까지’를 의미하고 첫 번째 부분을 떠나면 처음부터 시작됩니까?



답변

>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'

파이썬은이 개념을 “슬라이스”라고 부르며 단순한 문자열 이상에서 작동합니다. 포괄적 인 소개를 보려면 여기 를 살펴보십시오 .


답변

아무도 언급하지 않았기 때문에 완전성을 위해. 배열 슬라이스에 대한 세 번째 매개 변수는 단계입니다. 따라서 문자열을 뒤집는 것은 다음과 같이 간단합니다.

some_string[::-1]

또는 대체 문자를 선택하면 다음과 같습니다.

"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"

문자열을 앞뒤로 이동하는 기능은 슬라이스를 시작 또는 끝에서 배열 할 수 있도록 일관성을 유지합니다.


답변

Substr ()은 일반적으로 (예 : PHP 및 Perl) 다음과 같이 작동합니다.

s = Substr(s, beginning, LENGTH)

따라서 매개 변수는 beginningLENGTH입니다.

그러나 파이썬의 행동은 다릅니다. END (!) 다음에 시작과 끝이 예상됩니다. 초보자에게는 눈에 잘 띄지 않습니다. 따라서 Substr (s, starting, LENGTH)의 올바른 대체는

s = s[ beginning : beginning + LENGTH]


답변

이를 달성하는 일반적인 방법은 문자열 슬라이싱입니다.

MyString[a:b] 인덱스 a에서 (b-1)까지의 하위 문자열을 제공합니다.


답변

전체 (얕은) 사본 인 한 가지 예가 여기서 누락 된 것 같습니다.

>>> x = "Hello World!"
>>> x
'Hello World!'
>>> x[:]
'Hello World!'
>>> x==x[:]
True
>>>

이것은 시퀀스 유형의 사본 (인턴 된 문자열이 아님)을 작성하는 데 사용되는 일반적인 관용구입니다 [:]. 얕은 목록을 복사, 명백한 이유없이 사용되는 파이썬 목록 조각 구문을 참조하십시오 .


답변

파이썬에서 문자열을 부분 문자열로 묶어 세 번째 문자에서 문자열 끝까지 새로운 문자열을 얻는 방법이 있습니까?

어쩌면 myString[2:end]?

예, 이름 을 상수 싱글 톤에 할당하거나 바인딩 하면 실제로 작동합니다 .endNone

>>> end = None
>>> myString = '1234567890'
>>> myString[2:end]
'34567890'

슬라이스 표기법에는 3 가지 중요한 인수가 있습니다.

  • 스타트
  • 중지
  • 단계

제공되지 않을 때의 기본값은 다음과 None같습니다.

>>> stop = step = None
>>> start = 2
>>> myString[start:stop:step]
'34567890'

두 번째 부분을 떠나는 것이 ‘끝까지’를 의미한다면, 첫 번째 부분을 떠나면 처음부터 시작됩니까?

예, 예를 들면 다음과 같습니다.

>>> start = None
>>> stop = 2
>>> myString[start:stop:step]
'12'

슬라이스에 start를 포함 시키지만 stop까지는 포함하지 않습니다.

단계가 None이면 기본적으로 슬라이스가 1단계에 사용됩니다. 음의 정수로 밟으면 파이썬은 끝에서 시작으로 갈만큼 똑똑합니다.

>>> myString[::-1]
'0987654321'

슬라이스 표기법 질문 설명에 대한 답변 에서 슬라이스 표기법을 자세히 설명합니다.


답변

“끝”을 제외하고 바로 거기에 있습니다. 이것을 슬라이스 표기법이라고합니다. 예제는 다음과 같아야합니다.

new_sub_string = myString[2:]

두 번째 매개 변수를 생략하면 암시 적으로 문자열의 끝입니다.