比较多个字符串

时间:2011-08-31 11:18:29

标签: python string

嘿,我是新手我需要一些比较字符串的帮助 我的作业是制作一个聊天机器人,一个从文本文件中读取的聊天机器人,可以输入内容,以及产生的输出结果。

我的问题是它要求从文本文件中选择最合适的一个,这很简单吗?但你也必须同时保存变量

好的例子是规则之一是:

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 个答案:

答案 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的,在很多方面都是错误的。