하위 문자열이 다른 문자열에 있는지 확인하는 방법


107

하위 문자열이 있습니다.

substring = "please help me out"

다른 문자열이 있습니다.

string = "please help me out so that I could solve this"

Python 사용 substring의 하위 집합 인지 어떻게 알 수 string있습니까?

답변:


169

와 함께 in: substring in string:

>>> substring = "please help me out"
>>> string = "please help me out so that I could solve this"
>>> substring in string
True

10
어쩜, 파이썬은 너무 강하다. 나는 그것을하기 위해 함수가 필요하다고 생각했다. 그러나 그것은 하나의
빌트인이다

나는 실제로 파이썬을 배우고 나서 JS를 배우고 있었는데,이를 위해서는 if else 문과 다른 것들을 많이 추가해야 할 것입니다. 그래서 저는 파이썬에서 어떻게 수행되었는지 스스로 상기시키고 싶었습니다.이 대답은 나 자신에게 '물론!'이라고 말하게 만들었습니다. 파이썬에서 이와 같은 것은 너무 사소해서 많은 생각을하지 않습니다! : P
Games Brainiac

@GamesBrainiac 사실, JS에서 동일한 기능을 수행 할 그것은 단지 string.indexOf(substring) != -1더, 여기
LasagnaAndroid

일단 찾으면 yes 하위 문자열이 문자열에 존재합니다. 문자열이 어떤 위치에 있는지 어떻게 찾고 하위 문자열이 문자열에 두 번 이상 있으면 어떻게됩니까?
yoshiserry 2014 년

@yoshiserry substringin 의 위치 string를 원하면 string.index를
MarcoS

21
foo = "blahblahblah"
bar = "somethingblahblahblahmeep"
if foo in bar:
    # do something

(그런데- string같은 이름의 Python 표준 라이브러리가 있으므로 변수 이름을 지정하지 마십시오. 대규모 프로젝트에서 그렇게하면 사람들을 혼동 할 수 있으므로 이와 같은 충돌을 피하는 것이 좋은 습관입니다.)


혼란 스러울뿐만 아니라 그 지점 이후의 문자열을 참조하는 모든 것을 깨뜨립니다.
rplnt 2011 년

13

True / False 이상을 찾고 있다면 다음과 같이 re 모듈을 사용하는 것이 가장 적합합니다.

import re
search="please help me out"
fullstring="please help me out so that I could solve this"
s = re.search(search,fullstring)
print(s.group())

s.group() "제발 도와주세요"문자열을 반환합니다.


1
정규식 검색에 대한 좋은 팁.
Randall Cook

더 가벼운 노트에. 정규 표현식으로 무언가를 풀려고한다면 두 가지 문제를 풀려고하는 것입니다.
Hasan Iqbal

10

난 당신이 그들이 당신이 사용하지 않는 기술 면접이 작업을 수행하는 방법을 찾고있는 경우에는이를 추가 할 것이라고 생각 파이썬의 기능을 내장 in또는 find끔찍하지만, 일이 않는 :

string = "Samantha"
word = "man"

def find_sub_string(word, string):
  len_word = len(word)  #returns 3

  for i in range(len(string)-1):
    if string[i: i + len_word] == word:
  return True

  else:
    return False

2
좋은 예이지만 귀하의 신원이 올바르지 않습니다. 그리고 속도를 높이기 위해 문자열의 마지막 두 글자에서 세 글자 단어를 찾을 if len(substring) > len(string) return Falserange(len(string)-len(substring))없기 때문에 루프 범위가 더 나은지 확인 합니다. (몇 번의 반복을 저장합니다).
AnyOneElse

9

사람들은 string.find(), string.index()string.indexOf()주석에서 언급 했으며 여기에 요약합니다 ( Python Documentation 에 따라 ).

우선 string.indexOf()방법 이 없습니다 . Deviljho가 게시 한 링크는 이것이 JavaScript 함수임을 보여줍니다.

둘째 string.find()string.index()실제로 문자열의 인덱스를 돌려줍니다. : 유일한 차이점은 문자열 찾을 수없는 상황을 처리하는 방법입니다 string.find()수익을 -1하면서 string.index()을 제기한다 ValueError.


5

find () 메서드를 사용해 볼 수도 있습니다. string str이 string에서 발생하는지 또는 string의 하위 문자열에서 발생 하는지를 결정합니다.

str1 = "please help me out so that I could solve this"
str2 = "please help me out"

if (str1.find(str2)>=0):
  print("True")
else:
  print ("False")

1
In [7]: substring = "please help me out"

In [8]: string = "please help me out so that I could solve this"

In [9]: substring in string
Out[9]: True

1
def find_substring():
    s = 'bobobnnnnbobmmmbosssbob'
    cnt = 0
    for i in range(len(s)):
        if s[i:i+3] == 'bob':
            cnt += 1
    print 'bob found: ' + str(cnt)
    return cnt

def main():
    print(find_substring())

main()

주어진 문자열에서 하위 문자열 'bob'을 찾습니다.
avina k

0

이 방법을 사용할 수도 있습니다.

if substring in string:
    print(string + '\n Yes located at:'.format(string.find(substring)))

0

여기에 이미지 설명 입력

find ()를 사용하는 대신 쉬운 방법 중 하나는 위와 같이 'in'을 사용하는 것입니다.

'str'에 'substring'이 있으면 부분이 실행되고 그렇지 않으면 부분이 실행됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.