2017-12-06 7 views
1

문자열에 하위 문자열이 있는지 여부를 확인하려고합니다. 내가 실행중인 문제는 하위 문자열이 문자열의 다른 단어 내에있는 경우 함수가 True를 반환하지 않게하려는 것입니다.파이썬에서 문자열 내의 정확한 구문 일치

예를 들어, 부분 문자열이; "자주색 암소" 이며 문자열은 다음과 같습니다. "자주색 암소가 최고의 애완 동물을 만듭니다." 이 값은 False를 반환합니다. 암소는 부분 문자열에서 복수가 아니기 때문에.

그리고 하위 문자열이; "자주색 암소" 및 문자열은; "너의 자주색 암소가 내 헤지를 짓밟 았어!" 는 진정한

내 코드는 다음과 같은 형태 반환 :

def is_phrase_in(phrase, text): 
    phrase = phrase.lower() 
    text = text.lower() 

    return phrase in text 


text = "Purple cows make the best pets!" 
phrase = "Purple cow" 
print(is_phrase_in(phrase, text) 

를 내 실제 코드에서 나는 구문과 비교하기 전에 '텍스트'불필요한 구두점과 공간을 청소하지만 그렇지 않으면이 동일합니다. re.search를 사용해 보았습니다. 그러나 정규 표현식을 잘 이해하지 못하고 예제와 같은 기능 만 있습니다.

도움을 주셔서 감사합니다. 우리가 이전에 문자를 원하는 없다고

+0

감사합니다 편집 Jaques! 나는 그 자아를 떠났음을 알지 못했다. 거기에. – Jroam142

+0

그리고 모두들, 당신의 답변에 감사드립니다! – Jroam142

답변

0

하나는 루프

phrase = phrase.lower() 
text = text.lower() 

answer = False 
j = 0 
for i in range(len(text)): 
    if j == len(phrase): 
     return text[i] == " " 
    if phrase[j] == text[i]: 
     answer = True 
     j+=1 
    else: 
     j = 0 
     answer = False 
return answer 

으로 또는

phrase_words = phrase.lower().split() 
text_words = text.lower().split() 

return phrase_words in text_words 

을 분할하거나 말을 정규 표현식

import re 
pattern = re.compile("[^\w]" + text + ""[^\w]") 
pattern.match(phrase.lower()) 

를 사용하여 매우 문자 그대로이 작업을 수행 할 수 있습니다 또는 우리의 텍스트를 따르지만 공백은 괜찮습니다. 당신의 문구가 간단한 분할 하 고, 여러 단어를 가지고 작동하지 않습니다 교차 할 수 있기 때문에

0

정규 표현식은 트릭을

import re 

def is_phrase_in(phrase, text): 
    phrase = phrase.lower() 
    text = text.lower() 
    if re.findall('\\b'+phrase+'\\b', text): 
     found = True 
    else: 
     found = False 
    return found 
2

을 수행해야합니다. 내가이 사람을 위해 정규식으로 갈거야 :

import re 

def is_phrase_in(phrase, text): 
    return re.search(r"\b{}\b".format(phrase), text, re.IGNORECASE) is not None 

phrase = "Purple cow" 

print(is_phrase_in(phrase, "Purple cows make the best pets!")) # False 
print(is_phrase_in(phrase, "Your purple cow trampled my hedge!")) # True 
+0

감사합니다. 완벽합니다. 내가 나 자신을 위해 그것을 거의 알아 내었던 것처럼 본다. 내 변수 '구문'을 re.search로 가져 오는 방법을 알아 내려고 잠시 동안 노력했지만 문자열 형식을 사용하지 않을 생각이었습니다. 갈 시간은 정규 표현식에 대해 배우십시오! – Jroam142