파이썬 문자열에서 하위 문자열의 첫 번째 발생을 어떻게 찾을 수 있습니까?


123

그래서 내 문자열이 "그 친구는 멋진 친구"라면.
'친구'의 첫 번째 색인을 찾고 싶습니다.

mystring.findfirstindex('dude') # should return 4

이것에 대한 파이썬 명령은 무엇입니까?
감사.

답변:


213

find()

>>> s = "the dude is a cool dude"
>>> s.find('dude')
4

20
-1찾을 수없는 경우 반환
Christophe Roussy

is문장 에서 단어를 찾으려면 this is a cool dude어떻게합니까? find 메서드를 시도했지만 5 대신 인덱스 2를 반환합니다. find ()를 사용하여 어떻게이 작업을 수행합니까?
회귀 자

@Regressor : 정규식 및 단어 경계를 살펴 봅니다.
mechanical_meat

28

빠른 개요 : indexfind

find방법 옆 에도 있습니다 index. find그리고 index처음 나타나는 위치를 반환 : 모두 동일한 결과를 얻을 수 있지만, 아무것도 발견되지 않으면 index을 올릴 ValueError반면 find복귀 -1. Speedwise는 둘 다 동일한 벤치 마크 결과를 가지고 있습니다.

s.find(t)    #returns: -1, or index where t starts in s
s.index(t)   #returns: Same as find, but raises ValueError if t is not in s

추가 지식 : rfindrindex:

일반적으로, 찾아 지수는 전달 된 문자열이 시작 최소의 인덱스를 반환하고, rfind그리고 rindex는 검색 알고리즘에서 검색 문자열의 대부분 시작하는 가장 큰 인덱스 돌아 오른쪽으로 왼쪽 으로 시작하는 기능이 있으므로, r검색이에서 발생하는 것을 나타냅니다 못했습니다 왼쪽으로 .

따라서 검색중인 요소의 가능성이 목록의 시작 부분보다 끝 부분에 가까우 rfind거나 rindex더 빠를 경우.

s.rfind(t)   #returns: Same as find, but searched right to left
s.rindex(t)  #returns: Same as index, but searches right to left

출처 : Python : Visual QuickStart Guide, Toby Donaldson


문자열이로 정의되고 input_string = "this is a sentence"단어의 첫 번째 발생을 찾으려면 is작동합니까? # first occurence of word in a sentence input_string = "this is a sentence" # return the index of the word matching_word = "is" input_string.find("is")
회귀 자

1

파이썬 내장 함수를 사용하지 않고 알고리즘 방식으로 구현합니다. 이것은 다음과 같이 구현 될 수 있습니다.

def find_pos(string,word):

    for i in range(len(string) - len(word)+1):
        if string[i:i+len(word)] == word:
            return i
    return 'Not Found'

string = "the dude is a cool dude"
word = 'dude1'
print(find_pos(string,word))
# output 4

0
def find_pos(chaine,x):

    for i in range(len(chaine)):
        if chaine[i] ==x :
            return 'yes',i 
    return 'no'

6
들여 쓰기가 꺼져 있고 따옴표를 닫는 것을 잊은 것 같습니다. 코드에 대한 설명과 문제를 해결하는 이유도 도움이됩니다. 답변 방법
camille

죄송합니다 편집 ... 내 코드는 문자열에서 문자의 첫 번째 출현을 찾아 그의 자리를 반환합니다
Benmadani Yazid

0

verse = "당신에 대한 모든 것이 당신의 머리를 잃고 당신을 비난 할 때 당신이 머리를 지킬 수 있다면, \ n 모든 사람들이 당신을 의심 할 때 당신 자신을 믿을 수 있다면, \ n 그러나 그들의 의심도 용납하십시오; \ n 당신이 할 수 있다면 기다리면서 피곤하지 말고 \ n 거짓말을하거나 거짓말을하지 마세요 \ n 미움을 당하거나 미워하지 마세요 \ n하지만 너무 좋아 보이거나 너무 현명하게 말하지 마세요 : "

enter code here

print(verse)
#1. What is the length of the string variable verse?
verse_length = len(verse)
print("The length of verse is: {}".format(verse_length))
#2. What is the index of the first occurrence of the word 'and' in verse?
index = verse.find("and")
print("The index of the word 'and' in verse is {}".format(index))

Stack Overflow에 오신 것을 환영합니다. 더 많은 정보 나 더 나은 설명을 제공하지 않고 오래되고 이미 답변 된 질문 (녹색 확인 표시가있는 답변)에 답변하고 있습니다. 그래서 그것은 기본적으로 받아 들여진 대답을 복제합니다 . 좋은 답변어떻게 작성합니까? . (추가 참조 를 위해 인기있는 질문에 대해 노골적으로 중복 된 답변 ( '서핑')을 정리하는 방법을 참조 하세요 .)
Ivo Mori
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.