programing

Python에서 문자열 서브스트링을 가져오려면 어떻게 해야 하나요?

bestcode 2022. 9. 4. 15:20
반응형

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'

Python은 이 개념을 "슬라이싱"이라고 부르며 문자열 이상에서 작동합니다.포괄적인 소개는 이쪽을 봐 주세요.

아무도 그것을 언급하지 않았기 때문에 단지 완성도를 위해.배열 슬라이스의 세 번째 매개 변수는 단계입니다.따라서 문자열을 되돌리는 작업은 다음과 같이 간단합니다.

some_string[::-1]

또는 대체 문자를 선택할 수 있습니다.

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

문자열을 전진 또는 후진할 수 있기 때문에 슬라이스를 처음부터 배열할 수 있는 일관성이 유지됩니다.

Subst()는 보통 다음과 같이 동작합니다(PHP 및 Perl).

s = Substr(s, beginning, LENGTH)

파라미터는 다음과 같습니다.beginning ★★★★★★★★★★★★★★★★★」LENGTH.

그러나 Python의 동작은 다릅니다.시작과 종료 후(!)를 예상합니다.이것은 초보자가 발견하기 어렵다.따라서 기판(s, begining, length)의 올바른 대체 방법은 다음과 같습니다.

s = s[ beginning : beginning + LENGTH]

이것을 실현하는 일반적인 방법은 끈을 자르는 것입니다.

MyString[a:b]는 인덱스 a에서 (b - 1)까지의 서브스트링을 제공합니다.

여기서 알 수 없는 예가 있습니다.풀(shallow) 복사입니다.

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

타입 문자열이)의 카피를 할 때의 입니다.[:]목록을 얕게 복사합니다. 명확한 이유 없이 사용되는 Python 목록 슬라이스 구문을 참조하십시오.

Python에서 문자열을 서브스트링하여 3번째 문자부터 문자열 끝까지 새로운 문자열을 가져올 수 있는 방법이 있습니까?

아마도myString[2:end]

네, 이름을 할당하거나 바인드하면 실제로 작동합니다.end , , , , , , , , , , , , , , , , , , , , , , , , , , .None:

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

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

  • 개시하다
  • 이제 그만
  • 걸음

하지 않을 경우 은 "Default" 입니다.None 명쾌하게 넘어갈 수 - 지 pass pass - - 、 - 、 하 、 - 、 - 、 - 、 - 、 - 、 - - 。

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

두 번째 부분을 남기는 것이 '끝까지'를 의미한다면, 첫 번째 부분을 남기는 것이 처음부터 시작인가요?

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

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

슬라이스에는 start가 포함되지만 stop까지만 올라가고 stop은 포함되지 않습니다.

이 「」인 None는 " " " 를 사용합니다1스텝에 대해서.마이너스 정수로 스텝을 밟으면 Python은 처음부터 끝까지 스마트합니다.

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

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

'끝'만 빼고 바로 거기야슬라이스 표기법이라고 합니다.예시는 다음과 같습니다.

new_sub_string = myString[2:]

두 번째 파라미터를 생략하면 암묵적으로 문자열의 끝입니다.

논의에 두 가지 사항을 추가하고 싶습니다.

  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. Python에는 슬라이스 개체가 있습니다.

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

번호가 되어 있고 인 경우 할 수 .myString " " " 6 " " " " " " " " " 9 " " " " , " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ""acct = myString[6:][:9].

작전본부가 그걸 받아들인다면 실험적인 방법으로 시도해보고 싶을 거야

myString[2:][:999999]

동작합니다.에러는 발생하지 않고, 디폴트의 「문자열 패딩」은 발생하지 않습니다.

Python으로 PHP 에는 Python, Python이 많이 .substr(string, beginning, LENGTH).
Python을 했을 경우string[beginning:end]많은 엔드 인덱스를 계산해야 하기 때문에 보다 쉬운 방법은string[beginning:][:length]많은 수고를 덜었습니다.

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 '


text = "StackOverflow"
#using python slicing, you can get different subsets of the above string

#reverse of the string
text[::-1] # 'wolfrevOkcatS' 

#fist five characters
text[:5] # Stack'

#last five characters
text[-5:] # 'rflow'

#3rd character to the fifth character
text[2:5] # 'rflow'

#characters at even positions
text[1::2] # 'tcOefo'

놓쳤을 수도 있지만, 이 페이지에서는 변수에 대해 더 이상 설명하지 않기 때문에 원래 질문에 대한 완전한 답변을 찾을 수 없습니다.그래서 계속 찾아다녔어요.

아직 코멘트를 할 수 없기 때문에, 여기에 제 결론을 덧붙이겠습니다.이 페이지에 액세스 할 때, 저만이 이것에 흥미를 가지는 것은 아니라고 생각합니다.

 >>>myString = 'Hello World'
 >>>end = 5

 >>>myString[2:end]
 'llo'

1부를 남기면 1부를 받을 수중에...

 >>>myString[:end]
 'Hello' 

중간에 : 를 남겨두면 가장 단순한 서브스트링이 됩니다.이것은 5번째 문자입니다(0부터 카운트하기 때문에, 이 경우는 공백입니다).

 >>>myString[end]
 ' '

하드코드된 인덱스를 사용하는 것 자체가 혼란스러울 수 있습니다.

「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

슬라이스를 사용하면 읽기 쉬워집니다.

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

상기의 코드에서는, [:-1]은, 처음부터 최대 한도-1까지 인쇄를 선언합니다.

출력:

>>> Hello

주의: 여기서 [:-1]은 [0:-1] 및 [0:len(a)-1]과 같습니다.

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

출력:

>>> Am Siva

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

문자열 인쇄의 최대 제한을 (x)로 설정하면 문자열이 (x-1)까지 인쇄됩니다.또한 목록 또는 문자열의 인덱스는 항상 0부터 시작됩니다.

스트링에서 특정 서브스트링을 찾기 위해 for loop을 사용하는 간단한 솔루션이 있습니다.두 개의 문자열 변수가 있다고 합시다.

main_string = "lullaby"
match_string = "ll"

지정된 일치 문자열이 메인 문자열에 존재하는지 여부를 확인하려면 다음과 같이 하십시오.

match_string_len = len(match_string)
for index,value in enumerate(main_string):
    sub_string = main_string[index:match_string_len+index]
    if sub_string == match_string:
       print("match string found in main string")

언급URL : https://stackoverflow.com/questions/663171/how-do-i-get-a-substring-of-a-string-in-python

반응형