介紹
您可以通過在字符串文字前加上r
或R
來創建Python中的原始字符串。Python原始字符串將反斜杠字符(\)視為字面字符。當字符串需要包含反斜杠時,例如用於正則表達式或Windows目錄路徑時,您不希望它被視為轉義字符時,原始字符串非常有用。本文介紹了Python原始字符串的基本工作原理,並提供了一些常見示例,以示如何使用原始字符串來包含字符串中的特殊字符。
本文示例使用Python交互式控制台在命令行中演示不同的原始字符串場景。
使用原始字符串在字符串中包含換行符
此示例使用具有值的字符串:Hi\nHello
。如果您試圖將此值分配給普通字符串,則換行符(\n
)會創建一個新行:
- s = 'Hi\nHello'
打印字符串:
- print(s)
輸出是:
Hi
Hello
輸出顯示換行字符導致新行。
要在字符串中包含換行字符,請在字符串變量前加上 r
或 R
以創建原始字符串:
- raw_s = r'Hi\nHello'
列印字符串:
- print(raw_s)
輸出為:
Hi\nHello
輸出包括換行字符。
使用原始字符串包含雙斜線字符
如果您試圖在普通字符串中包含雙斜線字符,例如主機名路徑,則第一個反斜線字符將不會被打印,因為編譯器將反斜線視為轉義指示符。
例如,創建包含路徑的字符串:
- s = '\\examplehost\digitalocean\content\'
列印字符串:
- print(s)
輸出為:
\examplehost\digitalocean\content\
輸出顯示第一個反斜線字符未包含在字符串中。
要在字符串中包含兩個反斜線字符,請在字符串變量前加上 r
或 R
以創建原始字符串:
- s = r'\\examplehost\digitalocean\content\'
列印字符串:
- print(s)
輸出為:
\\examplehost\digitalocean\content\
輸出包括兩個反斜線字符。
故障排除引用和反斜杠字符在原始字符串中
在原始字符串中,引号仍然可以用单个反斜杠字符转义,但是反斜杠字符仍然保留在生成的原始字符串中。
此外,原始字符串不能以奇数个反斜杠字符结尾。由于这个特性,您无法创建包含单个反斜杠字符的原始字符串,所以r"/"
是一个无效的字符串。
无效的原始字符串示例
在这个示例中,由于被反斜杠字符转义,输出中缺少结尾引号,导致未终止的字符串文字
错误:
r'\'
在这个示例中,前两个反斜杠将互相转义,第三个将尝试转义结尾引号,导致未终止的字符串文字
错误:
r'ab\\\'
有效的原始字符串示例
以下是包含引號和反斜杠字符的有效原始字符串示例。
創建一個轉義引號的原始字符串:
- s = r"\"\""
輸出字符串:
- print(s)
輸出如下:
\"\"
輸出顯示反斜杠字符轉義引號,使字符串不會終止,但反斜杠字符仍然保留在結果字符串中。
創建具有偶數個反斜杠字符的原始字符串:
- s = R'ab\\'
輸出字符串:
- print(s)
輸出如下:
ab\\
輸出顯示偶數個反斜杠字符包含在結果字符串中。
結論
在本文中,您學會了Python中原始字符串的基礎知識。繼續學習有關Python字符串的知識。
Source:
https://www.digitalocean.com/community/tutorials/python-raw-string