我有一个文本文件,其中包含我想在我试图用Python编码的测验中被问到的问题。我希望这些问题以如下方式出现:
Multiple choice question?
(a) Option 1
(b) Option 2
(c) Option 3
因此,问题字符串写成如下:
"1. Multiple choice question?n(a) Option 1a(b) Option 2n(c) Option 3nn"
这些字符串存储在文本文件中,因此我可以更改它们或添加它们
然后使用以下代码将这些字符串导入Python中的列表:
with open("questions.txt") as file_in:
questions = []
for question in file_in:
questions.append(question)
然而,当我接着:
print(questions)
我:
['1. What is seven squared?\n(a) 47\n(b) 49\n(c) 59\n\nn', '2. What is the square root of 121?\n(a) Nine\n(b) Ten\n(c) Eleven\n\nn', '3. If a cube has a volume of 1000 cm^2, how long is each side?\n(a) 6cm \n(b) 8cm\n(c) 10cm\n\nn', '4. What is 347 minus 298?\n(a) 59\n(b) 49\n(c) 69\n\nn', '5. What is 22 x 11?\n(a) 231\n(b) 131\n(c) 341\n\nn']
。在导入过程中添加了额外的字符,这意味着当我在测试中使用这些字符串时,我看到的是应该格式化问题的所有n代码。我只是想导入字符串,就像它们在文本文件中一样,没有n的"处理"导致
"\n"
(两个反斜杠ns)
首先,阅读为什么反斜杠出现两次?简而言之,Python使用反斜杠来开始转义序列,因此'n'
代表换行符,'\'
代表反斜杠本身。
现在,我认为这里的主要问题是概念性的。读取文件与导入文件不同。读取意味着将其视为文本,而导入意味着将其视为代码.
我认为最好的解决方案是一个中间地带:结构化数据*如JSON或CSV。下面是如何在JSON中做到这一点:
questions.json
[
"1. Multiple choice question?n(a) Option 1n(b) Option 2n(c) Option 3nn"
]
tmp.py
import json
with open('questions.json') as f:
questions = json.load(f) # Parse JSON into data
print(questions)
['1. Multiple choice question?n(a) Option 1n(b) Option 2n(c) Option 3nn']
*我不确定这是正确的术语