HOWTO · Python

在 Python 中使用 和

本文介绍了换行符 和回车符 的转义序列之间的区别。示例代码显示了这两个转义序列有时会给出相同的输出,有时会给出不同的输出,具体取决于输出是显示在屏幕上还是写入文件。

本页内容

本文将探讨 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 节。