在.aiml文件中获取所有用户的输入(<pattern> input </pattern>)并将其添加到列表中

时间:2018-08-07 08:09:52

标签: python flask aiml

当前,我的任务是在.aiml文件中获取所有用户输入,并使用Python3将其附加到列表中。下面是代码:

topic.aiml

<?xml version = "1.0" encoding = "UTF-8"?>

<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>HELLO ALICE</pattern>
      <template>
         Hello User
      </template>
   </category>

   <category>
      <pattern>HOW ARE YOU</pattern>
      <template>
         I'm fine
      </template>
   </category>

   <category>
      <pattern>WHAT ARE YOU DOING</pattern>
      <template>
         Coding
      </template>
   </category>

   <category>
      <pattern>WHERE YOU FROM</pattern>
      <template>
         Manila
      </template>
   </category>
</aiml>

test.py

@extract.route('/')
def index_page():
    folder = 'templates/topic.aiml'
    data_set = []
    with open(folder, 'r') as myfile:
        data = myfile.read().replace('\n', '')
    return data

返回值为:您好,您在做什么吗,这是正确的。但是我不知道如何将其附加到 data_set

我刚接触团队给我的这种任务。如果有人知道如何操作此功能,将不胜感激。谢谢!

下面是结果。

Return value from topic.aiml

1 个答案:

答案 0 :(得分:1)

如果您真正想要的输出是HELLO ALICE HOW ARE YOU WHAT ARE YOU DOING WHERE YOU FROM,那么您的结果就是 误导

我将对您的问题中的一些模棱两可的信息进行解释。

您当前正在做的只是获取文件,删除换行符并返回其他所有内容。

我运行了这个程序;

from flask import Flask

extract = Flask(__name__)

@extract.route('/')
def index_page():
    folder = 'templates/topic.aiml'
    data_set = []
    with open(folder, 'r') as myfile:
        data = myfile.read().replace('\n', '')
    return data

extract.run()

这就是它在浏览器中的外观;

enter image description here

您需要做的是解析文本并找到pattern标记内的内容。为此,我建议使用BeautifulSoup;

from flask import Flask
from bs4 import BeautifulSoup

extract = Flask(__name__)

@extract.route('/')
def index_page():
    folder = 'templates/topic.aiml'
    with open(folder, 'r') as myfile:
        soup = BeautifulSoup(myfile.read(), 'html.parser')

    data_set = [match.text for match in soup.find_all("pattern")]
    data = " ".join(data_set)

    return data

extract.run()