簡體   English   中英

了解 Python 的反斜杠轉義字符

[英]Understanding Python's backslash escape character

我的腳本通過將文件路徑與文件類型后綴連接來創建要導出的文件。 例如,

int = 3
print r"C:\Test\\" + str(int) + ".jpg"

這將返回C:\\Test\\\\3.jpg

我認為因為我在開頭包含了 'r',所以在結尾不需要雙反斜杠,因為它會被視為原始字符串。 但以下不起作用:

int = 3
print r"C:\Test\" + str(int) + ".jpg"

...大概是因為 Python 在結束引號之前看到了一個轉義字符。 那么'r'有什么意義呢? 雖然我的文件在導出時保存在正確的位置,但我不喜歡打印命令在測試后給我兩個反斜杠(例如 C:\\Test\\3.jpg),而它只在 C 之后給我一個:

我怎樣才能在我的文件路徑中得到一個反斜杠?

不要嘗試使用字符串操作來構建文件路徑。 Python 有os.path模塊:

import os.path
i = 3
print os.path.join("C:\Test", str(i) + ".jpg")

這將確保正確構建路徑。

(另外,不要調用整數int ,因為它會影響內置的int()函數。)

即使在原始字符串中,字符串引號也可以用反斜杠轉義,但反斜杠仍保留在字符串中; 例如, r"\\""是由兩個字符組成的有效字符串文字:反斜杠和雙引號; r"\\"不是有效的字符串文字(即使原始字符串也不能以奇數個反斜杠結尾)。具體來說,原始字符串不能以單個反斜杠結尾(因為反斜杠會轉義后面的引號字符)還要注意,單個反斜杠后跟換行符被解釋為這兩個字符作為字符串的一部分,而不是作為行的延續.

來源

所以,它不會那樣工作。 如果你想使用原始字符串,但有一個反斜杠,你需要在之后單獨添加:

>>> r'C:\Test' + '\\'
'C:\\Test\\'

或者,在您的情況下,您也可以僅使用字符串格式來插入您的值:

>>> r'C:\Test\{0}.jpg'.format(i)
'C:\\Test\\1.jpg'

或者,您使用os.path.join來構建路徑:

>>> os.path.join(r'C:\Test', str(i) +'.jpg')
'C:\\Test\\1.jpg'

首先,不要調用整數 int,因為它隱藏了內置的 int() 函數。
使用 os.path 是一個非常聰明的方法

import os.path
i = 3
print os.path.join("C:\Test", str(i) + ".jpg")
#C:\Test\3.jpg

或者你必須使用字符串來操作來建立文件路徑:

_prefix = 'C:\Test'
i = 3
print _prefix + '\\' + str(i) + '.jpg'
#C:\Test\3.jpg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM