Python中的轉義字符可以幫助我們在字符串處理中提供特殊的需求,如換行、使用制表鍵、使用特殊符號等。但有時,我們需要把字符串的內容原樣輸出來,這時就需要特殊的處理方式了。
在Python字符串前使用字符 'r' 或 ‘R’ 可以實現這個需求,如:
str = r'Python/nJava'
像這種在字符串前端使用了 'r' 或 'R' 的字符串叫原生字符串。
原生字符串中的每個字符都表示它本身的含義。
如果讀者對于Python中的轉義字符不是很了解的話,可以看一下本站中的《Python中的轉義字符》這篇文章。
下面使用幾個例子來說明一下具體使用方法:
>>> s1="Python/nJava" # 不使用原生字符串
>>> print(s1)
Python
Java
>>> s1 #直接輸出,不使用print()函數
'Python/nJava'
>>> s2 = r"Python/Java"
>>> print(s2) # 使用print()函數輸出
Python/nJava
>>> s2 # 不使用print()函數直接輸出
'Python//nJava'
>>> s3 = R'I Love Python.' # 沒有使用轉義字符的字符串
>>> print(s3)
I Love Python
從上面的例子可以看出,在沒有使用 'r' 或 'R' 的字符串使用print()函數輸出時,其會按照轉義字符的轉義進行輸出,如果使用了 'r' 或 'R' ,則處于引號中的內容就會原樣被輸出。
在上面的例子中,我們也注意到在 Python 控制臺中直接使用變量進行輸出原生字符串時,Python 給 '/' 又添加了一個'/',實際上表示對 '/'的一個轉義,告訴用戶,這里有一個 '/',而不是換行符'/n'。
在實際使用原生字符串時,我們要注意合理處理字符串中的內容,否則可能與你想表達的含義不同,如下面的例子:
>>> str1 = "Python /ada" # 不使用原生字符串會輸出與我們預期不同的內容
>>> print(str1)
Python da
>>> str1 = r"Python /ada" # 使用后,輸出結果達到預期
>>> print(str1)
Python /ada
>>> str1 = 'y/x' #出報錯
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 1-2: truncated /xXX escape
>>> str1 = r'y/x' #沒有問題
>>> str2 = '/' # 字符串就是個 / ,但報錯
SyntaxError: EOL while scanning string literal
>>> str2 = r'/' # 沒有問題
>>> str3 = '//' # 想輸出兩個/,然不是
>>> print(str3)
/
>>> str3 = r'//' # 這樣才能達到預期
>>> print(str3)
//
本文(完)
新聞熱點
疑難解答