我是Python的新手,我正在使用我在这里找到的一个示例来读取文件中的行并打印它们。我不明白的是解释器忽略\n
转义序列的原因:
您可能会在PC中找到以下哪些组件? (选择所有正确的答案。)
一个。 CPU
B中。主板
℃。键盘
答案:A,B和E. \ n PC内的常用组件包括 \ n CPU,主板和 \ n RAM
questions_fname="Test.txt"
with open(questions_fname, 'r') as f:
questions = [line.strip() for line in f]
for line in questions:
print (line)
f.close()
我得到的结果是字符串:
Answers: A, B, and E. \nCommon components inside a PC include \nthe CPU,motherboard, and \nRAM
我只是在寻找一种格式化长线以适合屏幕的简单方法。
答案 0 :(得分:4)
您在字符串中没有"\n"
,因为您正在从文件中读取它,所以您有"\\n"
。如果你想拥有"\n"
,那么你需要解码字符串。请注意,3.x没有str.decode()
,因此您无法使用2.x中的该机制。
3>> codecs.getdecoder('unicode-escape')('foo\\nbar')[0]
'foo\nbar'
答案 1 :(得分:0)
尝试使用以下代码获取所需行为...
questions_fname = "Test.txt"
with open(questions_fname) as f:
for line in f:
line = line.rstrip().replace('\\n', '\n')
print(line)
.rstrip()
删除尾随空格,包括\n
的二进制形式。 .replace()
会对文件内容中的\n
序列进行明确的,用户定义的解释 - 捕获为可打印字符\
,后跟n
。
使用with
构造时,f.close()
会自动完成。
答案 2 :(得分:0)
\
只是Python脚本中的转义字符,而不是文本文件中的转义字符。在阅读文本文件时,Python会将所有反斜杠转换为\\
,因此在阅读文件时,\n
变为\\n
,而不是换行符
答案 3 :(得分:-1)
抱歉 - 这对于Python 3.x无效(我正在看标签),但我会留下来作为参考 - 请参阅@ Ignacio的回答:https://stackoverflow.com/a/14193673/1252759
如果您有效地获得了包含文字字符raw string
的{{1}},那么您可以重新解释字符串以使其再次成为转义序列:
'\n'
如果您想为某些显示器将线条换行到特定宽度,您可能还需要查看>>> a = r"Answers: A, B, and E. \nCommon components inside a PC include \nthe CPU,motherboard, and \nRAM"
>>> print a
Answers: A, B, and E. \nCommon components inside a PC include \nthe CPU,motherboard, and \nRAM
>>> print a.decode('string_escape')
Answers: A, B, and E.
Common components inside a PC include
the CPU,motherboard, and
RAM
模块...