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