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 節。