在Python中存储字符串的好方法是什么?

2024-05-16 18:02:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python构建一个对话机器人。虽然我想从头开始生成尽可能多的文本,但我仍然需要一种方法来编目和存储一堆对话框片段字符串。理想情况下,我希望在字符串中包含某种层次结构/分类。 例如:

问候语:

"Oh, nice to meet you {0}" "My name is Bob, how about you?"

调情:

"Stop it" "I'm blushing" "How flattering"

等等。。。在

虽然我可以把这些存储在数据库中,但最好有不同的格式,人们可以很容易地手工编辑。CSV?JSON?这样的事有没有先例?在


Tags: 方法字符串文本you层次结构分类情况机器人
2条回答

那要看你想如何使用它。如果字符串只供Python使用,那么应该考虑将它们存储在它们自己的.py文件中。是的,是一个模块,但它也是一个可以由Python解释的简单文本文件:)

很多项目使用.py文件作为配置文件(Django),导入其内容非常容易,因为您只需执行import answer_strings操作,并且已经在变量或类中获得了它们。在

例如,您可以这样做:

#bot answers module

greetings = ["hello {0}", "what's up {0}"]
farewells = ["see you soon {0}", "nos vemos {0}"]
...

并且可以随机返回相等的答案等

另一方面,如果Javascript、Java也要读取这些内容,节点.js或者除了Python之外的其他技术,应该使用一种更通用的格式,JSON、XML、YAML等等。在

我认为这在文本文件(项目的资源)中比在数据库中更好,因为这种方式(如您所述)更具可定制性。我还建议使用包含语义的格式。CSV文件非常冷,只是一堆转储到文件中的数据。使用XML、JSON等,您可以将数据分组到“问候语”、“再见”等类别中

别忘了,因为您有几个选项,所以最好以模块化的方式构建代码并进行解耦。因此,如果你做了一个决定,在未来需要改变,它将尽可能无缝地完成。在

希望这有帮助!在

这取决于要用字符串存储多少信息。在

我认为对于一个简单的情况,当“数据库”只是字符串列表时,可以使用纯文本,每行一个字符串。这种纯文本文件的优点是,使用从gnucoreutils(比如grep、sed…)到GUI编辑器的大量工具,可以很容易地搜索/编辑/操作这些纯文本文件。在

这也可以通过使用预定义的文件命名和目录层次结构轻松地扩展。例如,结构

data/
data/en_GB/greetings
data/en_GB/farewells
data/en_US/greetings
data/en_US/farewells
data/de_DE/greetings
data/de_DE/farewells

允许您按语言选择数据,甚至在某些系统上仅部署相关语言。在

如果您的问题只是换行符,那么您仍然可以通过上面的加上使用某种垂直分隔符(如~~~~)来避开。在


但是,如果您计划稍微复杂一点的结构和/或您希望它们发生变化,完整的序列化/标记语言可能会很有意义。我最喜欢的一个是YAML,它丰富、成熟,拥有面向主要语言的库,不受语言限制,而且很容易被人类理解和编辑(看看他们的网站:在YAML中!)。在

^{pr2}$

相关问题 更多 >