2016-09-06 11 views
0

Так что я создал простой Reddit бот с помощью Praw:Как сопоставить предложение точно, а не подстрока

import praw 
import time 
from praw.helpers import comment_stream 

r = praw.Reddit("han_solo_response") 
r.login() 

target_text = "I love you" 
response_text = "I know" 

processed = [] 
while True: 
    for c in comment_stream(r, 'all'): 
     if target_text in c.body and c.id not in processed: 
     #if find comment not in cache 
     c.reply(response_text) 
     processed.append(c.id) #then push the response 
     time.sleep(20) 

Он генерирует Хан Соло ответ «я знаю» каждый раз, когда кто-то где-нибудь на Reddit сообщениях "я любите вас "за знаменитый обмен фильмами о звездах. Он работает сейчас, но он ловит что-либо, содержащее «я люблю тебя», например, мне пришлось удалить один комментарий, когда парень говорил «я люблю свою машину».

Как я могу ограничить свой триггер точно «я тебя люблю», а не «твое» или любое другое слово, содержащее «тебя», или, если на то пошло, сделать так, чтобы ответ вызывался только отдельной фразой, а не когда оно появляется в контексте предложения.

ответ

0

Эта линия:

if target_text in c.body and c.id not in processed:

должно быть:

if target_text == c.body and c.id not in processed:

Если вы хотите сделать это без учета регистра:

target_text = "i love you"

и

if target_text == c.body.lower() and c.id not in processed: