2013-09-05 3 views
1

기본적으로 문자열에서 정확한 단어를 찾는 방법을 찾아야합니다. 내가 온라인 읽고 모든 정보는 너무파이썬에서 문자열의 정확한 단어를 확인하는 방법

98787This는

여전히 if 문에서 참으로 돌아올 것입니다 올바른 방법 문자열에서 문자를 검색하는 내게 주신.

이것은 내가 지금까지 가지고있는 것입니다.

elif 'This is correct' in text: 
    print("correct") 

이 전에 문자의 조합으로 작동합니다 올바른 ... 예를 fkrjCorrect, 4123Correct 및 lolcorrect 모든 if 문에서 다시 true로 올 것이다하십시오.

if text == 'This is correct': 
    print("Correct") 

이 전체 문자열이 있는지 확인합니다 : 나는 정확히 일치하는 경우에만 true로 돌아오고 싶을 때

+1

'in' 연산자에 대해 알고 있고'=='연산자가 아니라는 이상한 점이 있습니다. –

+0

'in'는 부분 문자열을 검색하는 반면'=='는 정확한 동일성을 검사합니다. 귀하의 질문 제목에서 나는 당신이 참으로 부분 문자열을 찾고 있다는 인상을 받았습니다 (어떤 경우에는'in'가 옳았습니다). 그러나 귀하의 텍스트에서 평등을 실제로 확인하고 싶다는 인상을 받고 있습니까? (어떤 경우'=='이 맞습니까?) –

+0

부분 문자열을 확인하고 싶습니다. 전에는 아무 것도 갖고 있지 않은지 확인하고 싶습니다. – user2750103

답변

4

사용 후 == 대신 in의 비교 연산자 "이것은 올바른" 단지 'This is correct'. 그렇지 않으면 False

+0

문장을 검사해야하기 때문에 그게 정확하지 않습니다 ... 한 문장을 돌리지 말아야합니다 ... 그래서 문장이 될 수 있습니다. 이것은 좋은 하루입니다. 그리고 이것이 정확합니다! – user2750103

+0

@ user2750103 시도해보십시오'수입 재; re.search ('\ bThis is correct \ b')가 None이 아닌 경우 : print ('correct') ' – TerryA

3

정규 표현식의 단어 경계를 사용할 수 있습니다. 예 :

import re 

s = '98787This is correct' 
for words in ['This is correct', 'This', 'is', 'correct']: 
    if re.search(r'\b' + words + r'\b', s): 
     print('{0} found'.format(words)) 

그 수율 :

is found 
correct found 

편집 : 정확히 일치하는 경우, ^$\b 주장을 교체는 제한하기로 일치시킵니다 시작하고 라인의 끝.

1

몇 가지 사항을 변경할 수 있습니다.

elif 'This is correct' in text[:len('This is correct')]: 

또는

elif ' This is correct ' in ' '+text+' ': 

두 작업

. 후자는 더 유연합니다.

+0

두 번째 옵션이 작동하지만 첫 번째 옵션이 아닌 것 같습니다. Py3.5 – EminezArtus

1

startswith() 기능을 찾고있는 것으로 의심됩니다. 이것은 또 다른 문자열

"abcde".startswith("abc") -> true 

"abcde".startswith("bcd") -> false 

의 시작에 일치하는 문자열의 문자가 다른 쪽 끝에서 확인하기 위해, 또한 endswith() 기능이 있는지 확인합니다.

0

실제로 단어 경계로 둘러싸인 '올바른 단어'문자열을 찾아야합니다.

그래서
import re 

if re.search(r'\bThis is correct\b', text): 
    print('correct') 

당신을 위해 작동합니다.

-1

문자열을 .split()을 사용하여 문자열 목록으로 분리 한 다음 in 연산자를 사용하십시오.

정규 표현식을 사용하는 것보다 훨씬 간단합니다.

+0

전체 문장에 대문자를 사용하지 마십시오 (보통 고함으로 해석됩니다). – Alexei

관련 문제