python - 为什么我在从文本文件导入列表的字符串中得到 \\n?
问题描述
我有一个文本文件,其中包含我想在尝试用 Python 编写的测验中被问到的问题。我希望这些问题如下所示:
Multiple choice question?
(a) Option 1
(b) Option 2
(c) Option 3
因此,问题字符串写出如下:
"1. Multiple choice question?\n(a) Option 1\a(b) Option 2\n(c) Option 3\n\n"
这些字符串存储在一个文本文件中,以便我可以更改它们或添加到它们
然后,我使用以下代码将这些字符串导入 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\\n\n', '2. What is the square root of 121?\\n(a) Nine\\n(b) Ten\\n(c) Eleven\\n\\n\n', '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\\n\n', '4. What is 347 minus 298?\\n(a) 59\\n(b) 49\\n(c) 69\\n\\n\n', '5. What is 22 x 11?\\n(a) 231\\n(b) 131\\n(c) 341\\n\\n\n']
即在导入过程中添加了额外的 \ 字符,这意味着当我在测验中使用这些字符串时,我会看到所有应该格式化问题的 \n 代码。我只想完全按照它们在文本文件中的样子导入字符串,而没有 \n 的“处理”导致
"\\n"
(两个反斜杠 ns)
解决方案
首先,阅读为什么反斜杠出现两次?简而言之,Python 使用反斜杠来启动转义序列,因此'\n'
表示换行符并'\\'
表示反斜杠本身。
现在,我认为这里的主要问题是概念上的。读取文件与导入文件不同。阅读意味着将其视为文本,而导入意味着将其视为代码。
我认为这里最好的解决方案是中间立场:结构化数据* 如 JSON 或 CSV。以下是如何在 JSON 中执行此操作:
问题.json
[
"1. Multiple choice question?\n(a) Option 1\n(b) Option 2\n(c) Option 3\n\n"
]
临时文件
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 1\n(b) Option 2\n(c) Option 3\n\n']
* 我不确定这完全是正确的术语
推荐阅读
- android - Unity 构建安卓 apk 失败!关于 SteamingAssets 文件夹中的文件过多
- javascript - html、css、javascript 文件是如何捆绑并从服务器发送到客户端浏览器的?
- design-patterns - 是否所有界面组合都被视为策略模式
- apache-kafka - 我如何在我的 kafka 流应用程序中测试 Exactly Once Semantics
- sockets - 单独获取每个自定义套接字行为并编写以下内容:功能,每个自定义套接字行为的目的
- c - C中的掷骰子游戏 - 计算输赢
- types - 函数和变量 2
- python - 如何计算csv中一行列表的平均值?
- django - 如何创建相同模型但不同用户的多个实例
- mysql - 如何在mysql的from子句中使用临时表?