所以我有一个文本文件,
question_one = {question:"what is 2+2", answer: "4", fake1: "5"}
question_two = {question:"what is the meaning of life?", answer:"pizza", fake:"42"}
如何导入这些词典,以便我可以像这样使用它们
print(question_one["question"])
print(question_two["question"])
所以出来的将是
what is 2+2
what is the meaning of life?
我希望这样,以便我可以在程序中添加问题到文本文件,然后保存它们,如果我添加更多,如果可能的话,请告诉我!
答案 0 :(得分:3)
最简单的方法是将您的问题存储到JSON文件中,如@Thom Wiggers建议的那样。
以下是一个例子:
[
{
"question": "what is 2+2",
"answer": "4",
"fake1": "5"
},
{
"question": "what is the meaning of life?",
"answer": "pizza",
"fake1": "42"
}
]
import json
with open('questions.json') as f:
questions = json.load(f)
for question in questions:
print(question['question'])
您可以在official documentation中了解有关JSON模块的更多信息。
答案 1 :(得分:1)
如果仅想要序列化数据,则需要使用pickle
或json
。 exec
将执行所有 Python代码,并且可能是一个严重的安全问题
pickle
更快,并且是针对Python定制的特异性,而json
可以读取&几乎任何编程语言的书面作品,并且仍然是人类可读的。人可编辑的。
现在,回答你提出的问题(你可能不想这样做):
您可以使用exec()
此函数支持Python代码的动态执行。对象必须 是字符串或代码对象。如果是字符串,则字符串为 解析为一套Python语句然后执行(除非 发生语法错误。)
即。
exec(open('data.txt', 'r').read())
另一种方法是(ab)使用import
,假设您的文件名为data.py
:
import data
data.question_one['question']
这显然不是import
的目的......我过去曾'使用过'这样的导入,后悔了(有很多警告,我会留下它作为一个练习让读者思考它们可能是什么。)
警告两者都是eval之类的语句,应谨慎使用,{strong> data.txt
中的任何 Python代码都将被执行,可能有潜在危险。 非常确信您信任传递给exec()
的内容的来源,如果您只想序列化数据(而不是运行Python代码),则不使用就这样)。