etc./StackOverFlow

Python에서 문자열의 하위 문자열을 얻으려면 어떻게 해야 합니까?

청렴결백한 만능 재주꾼 2021. 11. 19. 23:43
반응형

질문자 :Joan Venge


세 번째 문자에서 문자열 끝까지 새 문자열을 가져오기 위해 Python에서 문자열을 부분 문자열로 만드는 방법이 있습니까?

myString[2:end] 와 같을까요?

2편을 떠난다는 것은 '끝까지'라는 뜻이고, 1편을 떠나면 처음부터 시작하는 것인가?



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

Python은 이 개념을 "슬라이싱"이라고 부르며 단순한 문자열 이상에서 작동합니다. 여기 에서 종합적인 소개를 살펴보십시오.


Paolo Bergantino

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

 some_string[::-1]

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

 "Hello- -World"[::2] # outputs "Hello World"

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


Endophage

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

 s = Substr(s, beginning, LENGTH)

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

그러나 Python의 동작은 다릅니다. 시작과 END(!) 다음에 하나가 필요합니다. 이것은 초보자가 식별하기 어렵습니다. 따라서 Substr(s, 시작, LENGTH)의 올바른 대체는 다음과 같습니다.

 s = s[ beginning : beginning + LENGTH]

Michał Leon

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

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


codingscientist

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

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

이것은 시퀀스 유형(인턴된 문자열이 아님), [:] 의 사본을 생성하기 위한 일반적인 관용구입니다. Shallow는 목록을 복사합니다. 명백한 이유 없이 사용되는 Python 목록 슬라이스 구문을 참조하세요.


gimel

세 번째 문자에서 문자열 끝까지 새 문자열을 얻기 위해 Python에서 문자열을 부분 문자열로 만드는 방법이 있습니까?

myString[2:end] 와 같을까요?

예, 이것은 이름 end 를 상수 싱글톤 None 할당하거나 바인딩 하면 실제로 작동합니다.

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

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

  • 시작
  • 멈추다
  • 단계

지정되지 않았을 때의 기본값은 None 이지만 명시적으로 전달할 수 있습니다.

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

2편을 떠나는 것이 '끝까지'를 의미한다면, 1편을 떠나면 처음부터 시작하는 것인가?

예:

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

슬라이스에 시작을 포함하지만 중지까지만 포함하고 중지는 포함하지 않습니다.

단계가 None 이면 기본적으로 슬라이스는 단계에 1 음의 정수를 사용하면 Python은 끝에서 처음으로 이동할 만큼 충분히 똑똑합니다.

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

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


Aaron Hall

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

 new_sub_string = myString[2:]

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


bouvard

토론에 두 가지 요점을 추가하고 싶습니다.

  1. None 사용하여 "시작부터" 또는 "끝까지"를 지정할 수 있습니다.

     'abcde'[2:None] == 'abcde'[2:] == 'cde'

    이것은 빈 공간을 인수로 제공할 수 없는 함수에서 특히 유용합니다.

     def substring(s, start, end): """Remove `start` characters from the beginning and `end` characters from the end of string `s`. Examples -------- >>> substring('abcde', 0, 3) 'abc' >>> substring('abcde', 1, None) 'bcde' """ return s[start:end]
  2. 파이썬에는 슬라이스 객체가 있습니다:

     idx = slice(2, None) 'abcde'[idx] == 'abcde'[2:] == 'cde'

ostrokach

myString에 오프셋 6에서 시작하고 길이가 9인 계좌 번호가 포함되어 있으면 다음과 같이 계좌 번호를 추출할 수 있습니다. acct = myString[6:][:9] .

OP가 이를 수락하면 실험적인 방식으로 다음을 시도할 수 있습니다.

 myString[2:][:999999]

작동합니다 - 오류가 발생하지 않고 기본 '문자열 패딩'이 발생하지 않습니다.


CopyPasteIt

글쎄, 나는 PHP 스크립트를 파이썬으로 번역해야 하는 상황이 있었고, substr(string, beginning, LENGTH) 사용이 많이 있었습니다.
Python의 string[beginning:end] 선택했다면 끝 인덱스를 많이 계산해야 하므로 더 쉬운 방법은 string[beginning:][:length] 를 사용하는 것이어서 많은 문제를 해결했습니다.


Edson Horacio Junior

놓쳤을 수도 있지만 여기에서 변수에 대해 더 이상 논의하지 않기 때문에 이 페이지에서 원래 질문에 대한 완전한 답변을 찾을 수 없습니다. 그래서 계속 검색을 해야 했습니다.

나는 아직 논평할 권한이 없기 때문에 여기에 내 결론을 추가하겠습니다. 이 페이지에 액세스할 때 관심이 있는 사람은 저뿐만이 아니었습니다.

 >>>myString = 'Hello World' >>>end = 5 >>>myString[2:end] 'llo'

첫 번째 부분을 떠나면 얻을 수 있습니다.

 >>>myString[:end] 'Hello'

그리고 중간에 :를 남겨두면 5번째 문자가 되는 가장 간단한 부분 문자열을 얻게 됩니다(0부터 시작하므로 이 경우에는 공백입니다).

 >>>myString[end] ' '

Rudi Uhl

하드코딩된 인덱스를 사용하는 것 자체가 엉망이 될 수 있습니다.

이를 피하기 위해 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

슬라이스를 사용하면 가독성을 얻을 수 있습니다.


levi

a="Helloo" print(a[:-1])

위의 코드에서 [:-1]은 처음부터 최대 한도-1까지 인쇄하도록 선언합니다.

출력:

 >>> Hello

참고: 여기서 [:-1]은 [0:-1] 및 [0:len(a)-1]과 동일합니다.

 a="I Am Siva" print(a[2:])

산출:

 >>> Am Siva

위의 코드에서 a [2:]는 인덱스 2부터 마지막 요소까지 a를 인쇄하도록 선언합니다.

문자열을 인쇄하기 위해 최대 제한을 설정하면 (x)와 같이 문자열이 (x-1)까지 인쇄되고 목록이나 문자열의 인덱스는 항상 0에서 시작한다는 것을 기억하십시오.


Code Carbonate

str1='There you are' >>> str1[:] 'There you are' >>> str1[1:] 'here you are' #To print alternate characters skipping one element in between >>> str1[::2] 'Teeyuae' #To print last element of last two elements >>> str1[:-2:-1] 'e' #Similarly >>> str1[:-2:-1] 'e' #Using slice datatype >>> str1='There you are' >>> s1=slice(2,6) >>> str1[s1] 'ere '

Harsh

출처 : http:www.stackoverflow.com/questions/663171/how-do-i-get-a-substring-of-a-string-in-python

반응형