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)
//
本文(完)
新闻热点
疑难解答