嘿,我是新手我需要一些比较字符串的帮助 我的作业是制作一个聊天机器人,一个从文本文件中读取的聊天机器人,可以输入内容,以及产生的输出结果。
我的问题是它要求从文本文件中选择最合适的一个,这很简单吗?但你也必须同时保存变量
好的例子是规则之一是:
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
答案 0 :(得分:2)
我希望pyparsing超过任何基于正则表达式的方法来解决此任务。即使对于更复杂的语法也更容易构造可读的解析器。
答案 1 :(得分:0)
作为一个快速而愚蠢的解决方案,在列表中解析输入文件和商店条目。每个条目应包含动态编译的“匹配正则表达式”(例如r'you (\w+) (\w+) (\w+) (\w+) me(?i)'
)和“替换字符串”(例如r'What makes you think I \1 \2 \3 \4 you?'
)。对于每个传入请求,聊天机器人应匹配文本再次正则表达式列表,找到适当的条目,然后调用regex.sub()为“替换字符串”。
但首先,阅读一些关于Python的初学者教程。你的代码是非pythonic的,在很多方面都是错误的。