Python中的原生字符串:r字符的作用
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)
\\
本文(完)
如内容有错误或不完善的地方,欢迎留言评论,分享知识,网留余香。
如需转载,请注明出处和本文链接地址:翔宇亭IT乐园(http://www.biye5u.com/)
本文链接地址:http://www.biye5u.com/article/python/2020/6469.html
微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。
个人成长离不开各位的关注,你的关注就是我继续前行的动力。