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

Fetch all user's input (<pattern>input</pattern>) in .aiml file and append it on a list

目前我的任务是获取 .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

Return 值为:HELLO ALICE 你好,你好吗,你来自哪里,这是正确的。但我不知道如何将它附加到 data_set

对于团队交给我的这种任务,我只是个新手。如果有人知道如何操作这个,将不胜感激。谢谢!

结果如下。

Return value from topic.aiml

如果你真正想要的输出是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()

这是它在浏览器中的样子;

您需要做的是解析文本并找到 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()