python - 파이썬




문자열을 부분 문자열로 변환하는 방법이 있습니까? (8)

파이썬에서 문자열을 부분 문자열로 변환하여 문자열의 끝에서 3 번째 문자까지 새로운 문자열을 얻는 방법이 있습니까?

아마 myString[2:end] 과 같은가요?

두 번째 부분을 떠나는 것이 '끝까지'를 의미하는 경우 첫 번째 부분을 떠나면 처음부터 시작합니까?


파이썬에서 문자열을 부분 문자열로 변환하여 문자열의 끝에서 3 번째 문자까지 새로운 문자열을 얻는 방법이 있습니까?

아마 myString[2:end] 과 같은가요?

예, 이름을 end 거나 상수 싱글 톤에 할당하거나 bind 하면 실제로 작동합니다. None :

>>> 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를 포함 시키지만, 우리는 멈추지 만 멈추지 않는다.

step이 None 이면 기본적으로 슬라이스는 단계에 1 을 사용합니다. 음의 정수로 단계를 밟으면 파이썬은 처음부터 끝까지 똑똑하다.

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

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


Substr ()은 정상적으로 (즉, PHP와 Perl) 다음과 같이 작동합니다 :

s = Substr(s, beginning, LENGTH)

그래서 매개 변수는 beginningLENGTH 입니다.

그러나 파이썬의 동작은 다릅니다. END (!) 다음에 시작과 끝을 예상합니다. 이것은 초보자가 쉽게 발견 할 수 없습니다. 따라서 Substr (s, beginning, LENGTH)의 올바른 대체는 다음과 같습니다.

s = s[ beginning : beginning + LENGTH]

다른 사람이 언급하지 않았으니 완전성을 위해서. 배열 슬라이스의 세 번째 매개 변수는 단계입니다. 따라서 문자열을 뒤집는 것은 다음과 같이 간단합니다.

some_string[::-1]

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

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

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


당신은 "끝"을 제외하고 바로 그것을 가지고 있습니다. 슬라이스 표기법이라고합니다. 귀하의 예제를 읽어야합니다 :

new_sub_string = myString[2:]

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


이것을 달성하는 일반적인 방법은 String slicing입니다. MyString[a:b] 는 인덱스 a에서 (b - 1)까지 하위 문자열을 제공합니다.


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

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

이것은 연속 된 유형의 사본을 만드는 일반적인 관용구입니다 (인턴 된 문자열이 아닌). [:] Shallow는 목록을 복사합니다. python-list-slice-used-for-no-obvious-reason 보세요.


하드 코드 된 인덱스를 사용하면 혼란 스러울 수 있습니다.

이를 피하기 위해 Python은 내장 객체 slice() 합니다.

string = "my company has 1000$ on profit, but I lost 500$ gambling."

얼마나 많은 돈이 남아 있는지 알고 싶다면

일반적인 해결책 :

final = int(string[15:19]) - int(string[43:46])
print(final)
>>>500

조각 사용 :

EARNINGS = slice(15, 19)
LOSSES = slice(43, 46)
final = int(string[EARNINGS]) - int(string[LOSSES])
print(final)
>>>500

슬라이스를 사용하면 가독성이 높아집니다.


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

파이썬은이 개념을 "슬라이싱 (slicing)"이라고 부르며 단순한 문자열 이상에서 작동합니다. here 에서 포괄적 인 소개를보십시오.





string