Эй, я новичок. Мне нужна помощь в сравнении строк. My Assignment - сделать чатбот, тот, который читает из текстового файла, который имеет возможные вещи для ввода и каков будет результат.
Моя проблема в том, что он просит выбрать наиболее подходящий из текстового файла, просто yeh? но вы также должны сохранять переменные одновременно
Например, одна из строк правил:
you <w1> <w2> <w3> <w4> me | What makes you think I <w1> <w2> <w3> <w4> you?
Вы должны сохранить <w1>
и т.д. Для переменной. И вход может быть таким, "знаете ли вы, что вы действительно хороши для меня", поэтому вам нужно также настроить код для этого.
А также мы не можем сделать код только для этого текстового файла, он должен настраиваться на все, что помещается в текстовый файл.
Кто-нибудь может мне помочь?
Это то, что я хочу:
import string
import sys
import difflib
#File path:
rules = open("rules.txt", "rU")
#Set some var's:
currentField = 0
fieldEnd = 0
questions = []
responses = []
Input = ""
run = True
#Check if we are not at the end of the file:
for line in rules:
linem = line.split(" | ")
question = linem[0]
response = linem[1]
questions.append(question.replace("\n", ""))
responses.append(response.replace("\n", ""))
print questions
print responses
for q in questions:
qwords.appendq.split()
while run = True:
Input = raw_input('> ').capitalize()
for char in Input:
for quest in questions:
if char in quest:
n += 1
else:
if "<" in i:
n += 1
closestQuestion = questions.index(q)
print response
Я бы предпочел бы пирамировать любой подход, основанный на регулярном выражении, для решения этой задачи. Легче создавать читаемый парсер даже для более сложных и сложных грамматик.
Как быстрое и глупое решение, проанализируйте входной файл и сохраните записи в списке. Каждая запись должна содержать динамически скомпилированное "соответствующее регулярное выражение" (например, r'you (\w+) (\w+) (\w+) (\w+) me(?i)'
) и "замена string "(например, r'What makes you think я \1 \2 \3 \4 you?'
). Для каждого входящего запроса бот-чат должен соответствовать текстовому списку regex снова, найти соответствующую запись и затем вызвать regex.sub() для "замены строки".
Но прежде всего, прочитайте начальный учебник по Python. Ваш код не является пифоническим и просто неправильным во многих отношениях.