为什么Python从文本文件导入字符串到列表时会出现\n转义异常?
问题原因
- 首先你观察到的
\\n不是导入过程新增的字符:如果你直接打印整个列表,Python默认输出的是列表元素的repr(原始表示形式),会自动对字符串里的反斜杠做转义展示,不代表实际存储的内容。你可以先单独打印单条题目验证:print(questions[0]),如果能正常换行就说明没有问题。 - 如果单独打印还是显示
\n字符,说明你写入文本文件时,存的是字面意义的\和n两个字符,不是实际的换行控制符。
解决方法
方案1(推荐):修改题目存储格式
直接在文本文件中写实际换行,不要手动输入\n,questions.txt示例格式:
1. What is seven squared? (a) 47 (b) 49 (c) 59 2. What is the square root of 121? (a) Nine (b) Ten (c) Eleven
修改导入代码,按空行分割单道题目:
with open("questions.txt", encoding="utf-8") as file_in: content = file_in.read() # 按两道题之间的空行分割,过滤空内容 questions = [q.strip() for q in content.split("\n\n") if q.strip()]
这种方式更直观,后续新增修改题目也不需要手动写转义字符。
方案2:不修改现有文件,导入时做转义处理
如果不想改动现有存储了字面\n的文本文件,可以在读入后对字符串做转义解析:
with open("questions.txt", encoding="utf-8") as file_in: questions = [] for line in file_in: # 将字面转义字符转换为实际控制符 processed = line.encode("utf-8").decode("unicode_escape").strip() if processed: questions.append(processed)
验证
处理完成后执行print(questions[0])即可看到符合预期的换行格式。
内容的提问来源于stack exchange,提问作者Ben Darvill
相关产品推荐
相关产品推荐

