我正在用Python构建一个对话机器人。虽然我想从头开始生成尽可能多的文本,但我仍然需要一种方法来编目和存储一堆对话框片段字符串。理想情况下,我希望在字符串中包含某种层次结构/分类。
例如:
问候语:
"Oh, nice to meet you {0}"
"My name is Bob, how about you?"
调情:
"Stop it"
"I'm blushing"
"How flattering"
等等。。。在
虽然我可以把这些存储在数据库中,但最好有不同的格式,人们可以很容易地手工编辑。CSV?JSON?这样的事有没有先例?在
Tags:
那要看你想如何使用它。如果字符串只供Python使用,那么应该考虑将它们存储在它们自己的
.py
文件中。是的,是一个模块,但它也是一个可以由Python解释的简单文本文件:)很多项目使用
.py
文件作为配置文件(Django),导入其内容非常容易,因为您只需执行import answer_strings
操作,并且已经在变量或类中获得了它们。在例如,您可以这样做:
并且可以随机返回相等的答案等
另一方面,如果Javascript、Java也要读取这些内容,节点.js或者除了Python之外的其他技术,应该使用一种更通用的格式,JSON、XML、YAML等等。在
我认为这在文本文件(项目的资源)中比在数据库中更好,因为这种方式(如您所述)更具可定制性。我还建议使用包含语义的格式。CSV文件非常冷,只是一堆转储到文件中的数据。使用XML、JSON等,您可以将数据分组到“问候语”、“再见”等类别中
别忘了,因为您有几个选项,所以最好以模块化的方式构建代码并进行解耦。因此,如果你做了一个决定,在未来需要改变,它将尽可能无缝地完成。在
希望这有帮助!在
这取决于要用字符串存储多少信息。在
我认为对于一个简单的情况,当“数据库”只是字符串列表时,可以使用纯文本,每行一个字符串。这种纯文本文件的优点是,使用从gnucoreutils(比如grep、sed…)到GUI编辑器的大量工具,可以很容易地搜索/编辑/操作这些纯文本文件。在
这也可以通过使用预定义的文件命名和目录层次结构轻松地扩展。例如,结构
允许您按语言选择数据,甚至在某些系统上仅部署相关语言。在
如果您的问题只是换行符,那么您仍然可以通过上面的加上使用某种垂直分隔符(如
~~~~
)来避开。在但是,如果您计划稍微复杂一点的结构和/或您希望它们发生变化,完整的序列化/标记语言可能会很有意义。我最喜欢的一个是YAML,它丰富、成熟,拥有面向主要语言的库,不受语言限制,而且很容易被人类理解和编辑(看看他们的网站:在YAML中!)。在
^{pr2}$相关问题 更多 >
编程相关推荐