Сравнение нескольких строк - PullRequest
1 голос
/ 31 августа 2011

Эй, я новичок, мне нужна помощь в сравнении строк Мое задание - создать чат-бота, который читает из текстового файла, в который можно что-то вводить и каким будет конечный результат.

Моя проблема в том, что он просит выбрать наиболее подходящий из текстового файла, легко, да? но вы также должны сохранять переменные одновременно

Хорошо, пример одной из строк правил:

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

Ответы [ 2 ]

2 голосов
/ 31 августа 2011

Я бы предпочел pyparsing , чем любой подход на основе регулярных выражений для решения этой задачи. Легче создать читаемый синтаксический анализатор даже для более сложных и сложных грамматик.

0 голосов
/ 31 августа 2011

Как быстрое и глупое решение, проанализируйте входной файл и сохраните записи в списке.Каждая запись должна содержать динамически скомпилированное «совпадающее регулярное выражение» (например, r'you (\w+) (\w+) (\w+) (\w+) me(?i)') и «замещающая строка» (например, r'What makes you think I \1 \2 \3 \4 you?').Для каждого входящего запроса чат-бот должен сопоставить текстовый список регулярных выражений, найти соответствующую запись и затем вызвать regex.sub () для «строки замены».

Но прежде всего прочтите руководство для начинающих по Python.Ваш код непитоничен и во многих отношениях неверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...