在 Python 中使用 和
- Python 中的 ASCII 换行符
- Python 中的 ASCII 回车
- Python 中的行尾序列
-
Python 屏幕输出中
\n
和\r
的区别 -
Python 文本文件中
\n
和\r
的异同 - 结论
- 参考
本文将探讨 Python 的转义序列 \n
和 \r
之间的区别。
Python 中的 ASCII 换行符
转义序列 \n
表示 ASCII 换行符 (LF)。
我们可以使用转义序列 \n
在字符串中创建一个新行。反斜杠告诉 Python 将下面的 n
视为命令,创建一个新行。
光标位于下一行的开头。
Python 中的 ASCII 回车
转义序列 \r
表示 ASCII 回车 (CR)。
\r
的行为会有所不同,具体取决于输出是发送到屏幕还是文本文件。
此外,当 \r
与 \n
组合并将输出发送到文本文件时,顺序很重要。
Python 中的行尾序列
在文本文件中,Linux 使用 LF 来表示行尾。Windows 为此目的使用 CR LF。
旧版本的 Macintosh 使用 CR。
如果我们处理 Windows 文本文件,我们需要牢记这一点。
Python 屏幕输出中\n
和\r
的区别
以下代码显示了显示解释器输出时\n
和\r
之间的区别。
示例代码:
print("ggg\nddd")
print("hhh\rkk")
# Both \n and \r together.
print("ccc\r\nbbb")
print("www\n\rjjj")
输出:
ggg
ddd
kkh
ccc
bbb
www
jjj
第一条语句在第二行打印了\n
后面的字母,因为转义序列将光标置于新行的开头。
第二条语句中的\r
转义序列将光标置于同一行的开头,字母 kk
替换了该行已有的字符。 \r
不会将光标前进到下一行。
我们还发现 \n\r
和 \r\n
在这种情况下的行为相似。
Python 文本文件中\n
和\r
的异同
如果我们将解释器的输出写入文本文件,\n
和 \r
单独时的行为相似,但在一起时的行为不同。
两者都创建一个新的文本行,这与单独使用时在屏幕上显示时发生的情况不同。
当组合使用时,\r\n
只创建一个新的文本行,就像\n
或\r
单独使用。
但是,\n\r
会创建两行文本。当\n
后跟\r
时,第一个转义序列\n
创建一行,第二个转义序列\r
创建另一行。
我们必须创建一个文本文件并使用其路径来运行以下示例代码。
示例代码:
# Create variables.
new_l = "\n"
sta1 = "YYY\rWWW"
sta2 = "ZZZ\nUUU"
sta3 = "SSS\r\nQQQ"
sta4 = "RRR\n\rMMM"
# Open a file in append mode.
fl = open("/path/to/text/filename.txt", 'a')
# Write the variables to the file.
fl.writelines([sta1, new_l, sta2, new_l, sta3, new_l, sta4])
# Close the file.
fl.close()
输出:
YYY
WWW
ZZZ
UUU
SSS
QQQ
RRR
MMM
结论
如果写入屏幕,我们应该使用 \n
创建一个新行。如果我们使用\r
,它后面的文本会改写当前行的内容。
写入文本文件时,我们可以使用\n
或 \r\n
序列。我们还需要记住不同操作系统中的行尾序列。
参考
请参阅 Python 语言参考 中的第 2.1 和 2.4 节。